使用SoupStrainer有选择地解析

时间:2010-10-23 16:34:31

标签: python beautifulsoup scrape

我试图从购物网站解析一系列视频游戏。但是因为项目列表全部存储在标签内。

据说,文档的

This部分解释了如何解析文档的一部分,但我无法解决。我的代码:

from BeautifulSoup import BeautifulSoup
import urllib
import re

url = "Some Shopping Site"
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
for a in soup.findAll('a',{'title':re.compile('.+') }):
    print a.string

目前在任何标签中打印出一个非空标题引用的字符串。但它也在侧栏中引用了“特价”。如果我只能拿产品清单div,我会一石二鸟。

非常感谢。

2 个答案:

答案 0 :(得分:10)

哦,我很傻,我正在搜索属性为id = products的标签,但它应该是product_list

如果有人来搜索话,那就是最后的代码。

from BeautifulSoup import BeautifulSoup, SoupStrainer
import urllib
import re


start = time.clock()
url = "http://someplace.com"
html = urllib.urlopen(url).read()
product = SoupStrainer('div',{'id': 'products_list'})
soup = BeautifulSoup(html,parseOnlyThese=product)
for a in soup.findAll('a',{'title':re.compile('.+') }):
      print a.string

答案 1 :(得分:0)

首先尝试搜索产品列表div,然后搜索标题为a的广告代码:

product = soup.find('div',{'id': 'products'})
for a in product.findAll('a',{'title': re.compile('.+') }):
   print a.string