Extracting Tags from BeautifulSoup
我正在尝试从http://feeds.reuters.com/~r/reuters/technologynews/~3/zyauzq5cbz0/story01.htm获取身体标签。
但是漂亮的汤找不到。这是因为无效的HTML吗?如果是的话,我怎么能阻止呢?
我还尝试使用pytidylib作为html错误的前缀(http://countergram.com/open-source/pytidylib/docs/index.html)
下面是一些代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | def getContent(url, parser="lxml"): request = urllib2.Request(url) try: response = opener.open(request).read() except: print 'EMPTY CONTENT',url return None doc, errors = tidy_document(response) return parse(url, doc) def parse(url, response, parser="lxml"): try: soup = bs(response,parser) except UnicodeDecodeError as e: if parser=="lxml": return parse(url, response,"html5lib") else: print e,url print 'EMPTY CONTENT',url return None body = soup.body ... |
当我打印出汤时,我可以看到打开和关闭的身体标签,但在body=soup.body之后,我什么也得不到。
我使用的是python 2.7.3和beautifulsoup4它似乎与漂亮的soup3一起工作,但由于性能问题,我需要坚持使用bs4。
我终于让它运转起来了。代码如下:
1 2 3 4 5 6 7 8 9 | import urllib2 from lxml import html url ="http://www.reuters.com/article/2013/04/17/us-usa-immigration-tech-idUSBRE93F1DL20130417?feedType=RSS&feedName=technologyNews" response = urllib2.urlopen(url).read().decode("utf-8") test = html.fromstring(response) for p in test.body.iter('p'): print p.text_content() |