【问题标题】:grabbing a substring while scraping with Python2.6使用 Python2.6 抓取时抓取子字符串
【发布时间】:2010-05-16 22:11:53
【问题描述】:

您好,有人可以帮忙解决以下问题吗?

我正在尝试抓取一个包含以下信息的网站。我只需要提取 </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

【问题讨论】:

    标签: python list beautifulsoup mechanize substring


    【解决方案1】:

    我想upc_code 是您向我们展示的列表,而local_links 与您的问题无关,对吧?鉴于您没有在代码中进一步提及它...?

    所以我不确定upc_text 会在你的循环体中是什么upc 是一个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
    

    【讨论】:

    • 你说得对,我发帖时并没有改变它.. upc.contents.contents 不起作用干杯!
    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多