Python 为什么BeautifulSoup会从这个网页上丢失这么多内容?

Python 为什么BeautifulSoup会从这个网页上丢失这么多内容?,python,beautifulsoup,pycharm,lxml,Python,Beautifulsoup,Pycharm,Lxml,我有一个一年前造的网页垃圾桶。我需要再次使用它,但bs4的表现似乎有所不同。它用来返回包含整个网页的汤对象,但现在它在列表中间停止。我需要获取所有列表项,因此这破坏了我的旧代码 我在beautiful soup中寻找过类似的问题,这里的一个人也有类似的问题,但是解决方案(选择一个特定的div元素)对我不起作用,因为我需要整个网页的内容来抓取所有的URL 这是我正在使用的代码: import requests from bs4 import BeautifulSoup def siteopen

我有一个一年前造的网页垃圾桶。我需要再次使用它,但bs4的表现似乎有所不同。它用来返回包含整个网页的汤对象,但现在它在列表中间停止。我需要获取所有列表项,因此这破坏了我的旧代码

我在beautiful soup中寻找过类似的问题,这里的一个人也有类似的问题,但是解决方案(选择一个特定的div元素)对我不起作用,因为我需要整个网页的内容来抓取所有的URL

这是我正在使用的代码:

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社区版中运行此代码。可能会有一些尺寸限制吗?否则,如何解决此问题并访问完整的soup对象

编辑:

因为其他人已经在linux和PyCharm Pro中成功地运行了它,所以我尝试在mac OS终端上运行它,问题在那里重现。在PyCharm出现问题的同一点上,输出执行以下操作:


我可以查看该请求的所有数据。也许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')))
导入请求
从bs4导入BeautifulSoup
def siteopen(url):
web_source=url
source\u code=requests.get(web\u source,verify=False)
纯文本=源代码.text
汤=美汤(纯文本,“lxml”)
返汤
在str(siteopen)中打印(“”)http://celt.ucc.ie/irlpage.html')))
如果你得到了一个真实的答案,你就知道它已经占据了整个页面

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


您确定
纯文本
包含所有html吗?你真的打印出来了吗?你能提供url并指出你要找的url吗?如果我运行你发布的代码,它似乎总是返回一个完整的网页。无法在mint Python 2或3上复制。我将所有内容打印到
。当直接在Python 3中打印时,我得到了一个ASCII错误-通过将其编码为
utf8
来修复该错误。PyCharm会以某种方式隐藏这一点吗?@JohnGordon
plain_text
肯定包含所有html。我认为这个问题与PyCharm有关。它确实返回了事实。我已经把缓冲区设置为2048,但我把它翻了一倍,到了4096,这没什么区别。至少你知道你所有的数据都在那里:)可能想联系JetBrains,看看为什么PyCharm的行为很有趣。FWIW它在PyCharm Pro中为我正确显示。只是在终端中运行了它,在同一点上出现了问题,所以实际上我不认为它是PyCharm。编辑了上面的文章以显示。请尝试使用html.parser而不是lxml,然后打印(soup.prettify())效果很好。但我不知道为什么lxml会导致这种情况。