2013-03-11 85 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