【问题标题】:BS4 find item by classBS4 按类别查找项目
【发布时间】:2016-09-04 20:52:11
【问题描述】:

我正在尝试制作一个简单的网络爬虫 我有一个类似这样的 htm 文件:

    <!DOCTYPE html>
    <title>some text</title>
    <div class="ui-box-title">Item specifics</div>
     <ul>
      <li>Coffee</li>
      <li>Tea</li>
      <li>Milk</li>
    </ul> 
    <div class="description">Item specifics</div>
      <li>not interesting</li>
      <li>not interesting</li>
      <li>not interesting</li>
    ...

我如何只提取咖啡茶和牛奶?我试过这个

    allaftuibox=soup.find_all_next("div", { "class" : "ui-box-title" }):
    allaftuibox.find_all("ul")

但是 allaftuibox 是空的。我在哪里犯错误?我如何只提取 ul? 有人可以帮我吗?

【问题讨论】:

  • 您的方法实际上看起来不错。您确定soup 包含此列表吗?
  • 是的。刚把汤写到一个文件里。在那里。有没有可能真正的html被某种方式破坏了?

标签: python-2.7 web-crawler bs4


【解决方案1】:

这非常简单。 我已经设法提取了中间部分:

for every in soup.findAll("div"):
            if "Product Description" in every:
                itsp=True
            if itsp:
                #print every
                #print every.find('img', {'class': 'sizedProdImage'})
                #desc.append(every)
                acv=0
            if "Packaging Details" in every:
                itsp=False

我不确定这是否是最优雅或最有效的解决方案,但它确实有效。 第二个错误是 find all with the class。由于某种我不明白的原因,这在速卖通中根本不起作用。解决方案是搜索文本。

ntdesc=soup.find("span",text="Unlock Phones:").find_all_next()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多