Python 使用BeautifulSoup进行Web刮片时返回非类型

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

我正在尝试使用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')
    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
适合我