为什么BeautifulSoup从此网页上丢失了这么多内容?

时间:2019-05-14 15:39:43

标签: python beautifulsoup pycharm lxml

我有一年前建立了一个网络爬虫。我需要再次使用它,但是bs4的行为似乎有所不同。它曾经返回一个包含整个网页的汤对象,但是现在它在列表的中间停了下来。我需要获取所有列表项,所以这破坏了我的旧代码。

我一直在寻找漂亮的汤来解决类似的问题,这里的一个人确实遇到了类似的问题,但是解决方案(选择特定的div元素)对我不起作用,因为我需要整个网页的价值内容以抓取所有网址。

这是我正在使用的代码:

import requests
from bs4 import BeautifulSoup


def siteopen(url):
    web_source = url
    source_code = requests.get(web_source)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text, "lxml")
    return soup


print(siteopen('http://celt.ucc.ie/irlpage.html'))

plain_text包含我要抓取的所有html,但是soup元素未包含全部。它在列表项之后不久就停止了,显然是随机的。

我正在PyCharm社区版中运行此代码。可能会设置一些大小限制吗?否则,如何解决此问题并访问完整的汤对象?

编辑:

由于其他人已经成功在linux和PyCharm Pro中运行了此程序,因此我尝试在mac OS终端中运行它,并在此重新创建了问题。在我在PyCharm中遇到问题的同一点,输出执行此操作:

enter image description here

1 个答案:

答案 0 :(得分:1)

我可以很轻松地看到该请求的所有数据。也许PyCharm限制了允许在单张纸上显示的文本量。

您可以通过运行来验证

import requests
from bs4 import BeautifulSoup


def siteopen(url):
    web_source = url
    source_code = requests.get(web_source, verify=False)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text, "lxml")
    return soup


print("</html>" in str(siteopen('http://celt.ucc.ie/irlpage.html')))

如果返回True,则表示它已拉整了整个页面。

选中此项以查看是否可以增加输出缓冲区限制:

Pycharm output limit exceeded