Python 美丽的蟒蛇。。。find(id=";productTitle";)不返回任何内容

Python 美丽的蟒蛇。。。find(id=";productTitle";)不返回任何内容,python,beautifulsoup,Python,Beautifulsoup,我是新的网络抓取,并想从亚马逊拉一些信息。我已经写了这几行基本的文字,但它们不起作用 import requests from bs4 import BeautifulSoup URL ='https://www.amazon.ca/Monkey-Biscuits-14-oz-Orange/dp/B074SYBXLG/' headers= {'User-Agent': '...myuseragent' } page = requests.get(URL, headers=headers)

我是新的网络抓取,并想从亚马逊拉一些信息。我已经写了这几行基本的文字,但它们不起作用

import requests
from bs4 import BeautifulSoup

URL ='https://www.amazon.ca/Monkey-Biscuits-14-oz-Orange/dp/B074SYBXLG/'

headers= {'User-Agent':  '...myuseragent' }

page = requests.get(URL, headers=headers)

soup = BeautifulSoup(page.content,"html.parser")
print( soup.find(id="productTitle") ) 
但html文件显然有以下部分:

<span id="productTitle" class="a-size-large">
Exotic Nutrition Monkey Biscuits 14 oz. (Orange) - Food for Old World Primates
</span>

奇异营养猴饼干14盎司(橙色)-东半球灵长类食物

任何类型的帮助都将不胜感激

html文档中的一些标记可能由javascript动态生成。
通过使用BeautifulSoup,您只能刮取静态元素。 使用硒将使您摆脱麻烦。

似乎
“html.parser”
查找它有问题,但如果我使用
“lxml”
,它会工作-但这可能意味着您必须安装模块
lxml

soup = BeautifulSoup(page.content, "lxml")

print(soup.find(id="productTitle").get_text(strip=True)) 

编辑:也适用于
“html5lib”
(如果已安装)


在浏览器中关闭JavaScript,然后在浏览器中加载此页面-您将看到Python可以看到的内容。我不确定如何关闭它,我将尝试。但是我很确定python可以看到我在javascript上看到的东西,因为html字符串是完美的,并且在我将其输出到文件时包含了我的字符串。是的,仍然可以看到同样的东西,它在html5lib上工作!与lxml相比,我更喜欢它,因为它简单许多!你知道为什么吗?这看起来很奇怪。@AlexanderCécile在我找到的文档中,他们可能会以不同的方式处理无效的HTML——也许这是一种解释。@AlexanderCécile还有一个比较表,一些解析器对不正确的HTML限制较少(宽松)。
soup = BeautifulSoup(page.content, "html5lib")