【问题标题】:BeautifulSoup not getting entirety of extracted classBeautifulSoup 没有得到完整的提取类
【发布时间】:2014-12-21 13:20:52
【问题描述】:

我正在尝试使用 BeautifulSoup 从 craigslist 中提取数据。作为初步测试,我写了以下内容:

import urllib2
from bs4 import BeautifulSoup, NavigableString

link = 'http://boston.craigslist.org/search/jjj/index100.html'
print link
soup = BeautifulSoup(urllib2.urlopen(link).read())
print soup
x=soup.body.find("div",class_="content")
print x

打印汤后,我可以看到整个网页。但是,在尝试查找更具体的内容(例如名为“内容”的类)时,它会打印“无”。当我在自己的浏览器上查看时,我知道该类存在于页面源中,但由于某种原因,它没有在 BeautifulSoup 解析中找到它。有什么想法吗?

编辑: 我还添加了以下内容以查看会发生什么:

print soup.body.article

当我这样做时,它会在文章标签之间打印出一些信息,但不是全部。是否有可能当我使用 find 功能时,它会以某种方式跳过一些信息?我真的不知道为什么当它为一般汤打印整个东西时会发生这种情况,但当我试图在其中找到细节时却不是。

【问题讨论】:

  • 您创建网址的方式对我来说似乎没有必要。我不能直接复制粘贴到我的浏览器中。您是否检查过页面源,例如按 ctrl+u(不是 firebug 或开发人员工具)?
  • 已编辑以使 url 完整。是的,我已经直接检查了页面源,它​​显示了所有内容。
  • 您的代码适用于我,x 返回您提供的特定网址的标签。尝试requests 模块并再次检查。

标签: beautifulsoup web-crawler


【解决方案1】:

BeautifulSoup 实例(您的soup 变量)上的find 方法与Tag(您的soup.body)上的find 方法不同。

这个:

soup.body.find("div",class_="content")

仅搜索 body 标记的直接子级。

如果您在 BeautifulSoup 实例上调用 find,它会执行您想要的操作并搜索整个文档:

soup.find("div",class_="content")

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多