我试图从Span ID中抓取字段,但其值并不像使用Find并从范围中获取文本那么简单.

以下是网页中的HTML. HTML

我正在试着打印"B0C4YKLXPQ"

这给我带来了

以下是所有失败的try .

- page_soup.find("div", {"id": "twisterContainer"}).find_all("data-asin")

- page_soup.find("div", {"id": "twisterContainer"}).find("span", {"id": "fitRecommendationsSection"}).span["data-asin"]

- page_soup.find("div", {"id": "twisterContainer"}).find("span", {"id": "fitRecommendationsSection"}).find_all("data-asin")

- page_soup.find("div", {"id": "twisterContainer"}).find_all("data-asin")

- page_soup.find("div", {"id": "twisterContainer"}).find_all(["data-asin"])

推荐答案

下面的代码有很好的工作机会,除非你的IP因为某些原因被亚马逊列入黑名单,比如try 太多次抓取:

import requests
from bs4 import BeautifulSoup as bs

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

url = 'https://www.amazon.com/dp/B002G9UDYG'

r = requests.get(url, headers=headers)
soup = bs(r.text, 'html.parser')

item = soup.select_one('span[id="fitRecommendationsSection"]').get('data-asin')
print(item)

结果为终端:

B0C4YKLXPQ

可以在BeautifulSoup文档中找到here个.

Python相关问答推荐

Altair -箱形图边界设置为黑色,中线设置为红色

剧作家Python:expect(locator).to_be_visible()vs locator.wait_for()

如果条件为真,则Groupby.mean()

使用SciPy进行曲线匹配未能给出正确的匹配

比较两个数据帧并并排附加结果(获取性能警告)

如何比较numPy数组中的两个图像以获取它们不同的像素

对某些列的总数进行民意调查,但不单独列出每列

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

计算组中唯一值的数量

所有列的滚动标准差,忽略NaN

如何在UserSerializer中添加显式字段?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

实现神经网络代码时的TypeError

如何更新pandas DataFrame上列标题的de值?

如何合并两个列表,并获得每个索引值最高的列表名称?

Tkinter菜单自发添加额外项目

如何根据rame中的列值分别分组值

如何从比较函数生成ngroup?

数据框,如果值在范围内,则获取范围和

需要帮助使用Python中的Google的People API更新联系人的多个字段'