Python 使用BeautifulSoup进行Web刮片时返回非类型
我正在尝试使用BeautifulSoup创建一个网站,并编写了以下代码:Python 使用BeautifulSoup进行Web刮片时返回非类型,python,beautifulsoup,Python,Beautifulsoup,我正在尝试使用BeautifulSoup创建一个网站,并编写了以下代码: import requests from bs4 import BeautifulSoup page = requests.get("https://gematsu.com/tag/media-create-sales") soup = BeautifulSoup(page.text, 'html.parser') try: content = soup.find('div', id='main') p
import requests
from bs4 import BeautifulSoup
page = requests.get("https://gematsu.com/tag/media-create-sales")
soup = BeautifulSoup(page.text, 'html.parser')
try:
content = soup.find('div', id='main')
print (content)
except:
print ("Exception")
但是,这将返回一个NoneType,即使该div在网站上具有正确的ID。我做错什么了吗
我在页面上看到id为main的div:
当我打印soup
时,我还会找到div main:
本节简要介绍了这一点 Beauty Soup为许多不同的解析器提供相同的接口,但每个解析器都是不同的。不同的解析器将从同一文档创建不同的解析树。最大的区别在于HTML解析器和XML解析器之间 [……] 以下是使用Python内置HTML解析器解析的同一文档:
BeautifulSoup(“”,“html.parser”)
与html5lib一样,该解析器忽略结束标记
。与html5lib不同,该解析器不试图通过添加标记来创建格式良好的HTML文档。与lxml不同,它甚至不需要添加标记
您遇到的问题可能是由于
HTML.parser
无法正确处理格式错误的HTML造成的。这导致当BeautifulSoup解析HTML时,id=“main”
被剥离。通过将解析器更改为html5lib
或lxml
,BeautifulSoup处理格式错误的HTML的方式不同于HTML。解析器
尝试打印变量soup
,并在其中搜索所需的div。。。也许你找不到。如果是这样,那是因为页面的内容是动态生成的。。。尝试使用selenium
如果我打印soup
我可以看到带有main的div。我自己也尝试过。。。我在chrome中找不到@Anwarvic Open devtools,请使用xpath搜索工具//div[@id=“main”]
对投票人来说,我将复制OPs问题@似乎,html.parser
正在剥离该标记的id
属性。将html.parser
更改为lxml
或html5lib
适合我