在使用Python2.6进行抓取时抓取子字符串

时间:2010-05-16 22:11:54

标签: python list beautifulsoup mechanize substring

嘿,有人可以帮助以下吗?

我正在尝试抓取一个包含以下信息的网站。我需要在</strong>代码后面提取数字..

[<li><strong>ISBN-13:</strong> 9780375853401</li>, <li><strong>Pub. Date: </strong> 05/11/2010</li>]
[<li><strong>UPC:</strong> 490355000372</li>, <li><strong>Catalog No:</strong> 15024/25</li>, <li><strong>Label:</strong> CAMERATA</li>]

这是我用来使用mechanize和BeautifulSoup获取上述数据的代码片段。我被困在这里,因为它不会让我使用find()函数列表

br_results = mechanize.urlopen(br_results)
html = br_results.read()
soup = BeautifulSoup(html)
local_links = soup.findAll("a", {"class" : "down-arrow csa"})
upc_code = soup.findAll("ul", {"class" : "bc-meta3"})
for upc in upc_code:
    upc_text = upc.contents.contents
    print upc_text

1 个答案:

答案 0 :(得分:2)

我认为upc_code是您向我们展示的列表,local_links与您的问题无关吗?鉴于你没有在你的代码中进一步提及它??

因为upc_textupc ul - Tag,所以我不确定upc.contents在你的循环体内会是什么是一个li标签列表(大概),我不知道upc.contents.contents如何工作 - 你看到的代码是什么?我本来应该有一个例外!

无论如何,我编写循环的方式如下:

for upc in upc_code:
    listitems = upc.findAll('li')
    for anitem in listitems:
        print anitem.contents[1]

因为您似乎想要每个列表项的第二个子项(第一个是strong标记,第二个是您想要的可导航字符串。

如果它不是您想要的每个列表项的第二个孩子,请澄清;例如,你可以识别强者并获得它的下一个兄弟,如果这更适合你 - 只需将嵌套循环的主体变为

print anitem.find('strong').nextSibling