2013-03-11 64 views
-1

我正在使用BeautifulSoup使用以下代碼解析網站。我能夠解析網站和打印數據,當前輸出是@http://pastie.org/6448357,但是,我只想打印鏈接中只有一部分數據,期望的輸出是@http://pastie.org/6448362任何人都可以提供關於如何完成這些任務的輸入?僅解析HTML數據的一部分

from bs4 import BeautifulSoup as bs 
import argparse 
import urllib 
import urllib2 
import getpass 
import re 
import requests 

def update (url): 
    print url 
    req = urllib2.Request(url=url) 
    try: 
     f = urllib2.urlopen(req) 
     txt = f.read() 
     soup = bs(txt) 
     print soup 
     f.close() 


def main(): 
    #For logging 
    print "test" 
    parser = argparse.ArgumentParser(description='This is the update.py script created by test') 
    parser.add_argument('-u','--url',action='store',dest='url',default=None,help='<Required> url link',required=True) 
    results = parser.parse_args()# collect cmd line args 
    url = results.url 
    #print url 
    update(url) 
if __name__ == '__main__': 
    main() 
+0

不要使用外部資源像pastie提供產生額外的信息。一切都屬於這個問題。 – 2013-03-11 05:37:27

回答

0

[我不能夠發表評論我不知道爲什麼..:P]

我還沒有使用beautifulsoup但通常當我必須檢索整個網頁我只是尋找一些獨特的節圍繞重要數據的標識符..

例如在您的情況下{||}發生的唯一性。

所以,簡單地閱讀整個頁面,找到您的數據:

site=urllib2.urlopen(url1) 
a=site.read() 
c1=a.find('{|') 
c2=a.find('|}') 
c=c1 
while(c<c2): 
    print a[c] 
    c+=1 
+0

謝謝,有很多塊有{|和|} ..我只想阻止行後「==== < font color =」#008000「> Data/text Build Combo </font > ====」這怎麼辦? – user2125827 2013-03-11 05:59:54

+0

也.. ..在一個新的行中打印每個字母 – user2125827 2013-03-11 06:08:26

+0

以及在這種情況下,使用'a.find'中的唯一開始標識符,就像您提到的那樣..''find'語句查找字符串中第一次出現的字符串當前位置。因此,最終的標識符可以很簡單地寫成:''''你可以寫'b + = a [c]';而不是'print a [c]';這將在'b'中存儲該區域。如果你願意,你可以稍後操作'b'。 – WYSIWYG 2013-03-11 10:20:21