【发布时间】:2021-07-25 03:29:16
【问题描述】:
url = 'https://www.amazon.ca/Powerextra-Replacement-Battery-Compatible-NP-FZ100/dp/B07PQQQ82K/ref=bmx_4?pd_rd_w=TNcoX&pf_rd_p=d9347c84-a27a-4c22-b959-7bb71382273b&pf_rd_r=E7RKN5D6HSM4TFZQJCGT&pd_rd_r=e8bff283-bc96-4b77-b31a-f413b4d62e40&pd_rd_wg=wje3Z&pd_rd_i=B07PQQQ82K&psc=1'
headers = 'headers = { "user-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}'
page = requests.get(url, headers= headers)
soup = BeautifulSoup(page.content, "lxml")
title = soup.find('input', {'id': 'mbb-offeringID-1'}).get_text()
print(title)
我也试过了:
title = soup.find('input', {'id': 'mbb-offeringID-1'}).get('value')
print(title)
然后我尝试了它是否通常与“跨度 ID”一起工作并且它给出了相同的错误
title = soup.find(id = "productTitle").get_text()
【问题讨论】:
-
看起来该 ID 不在
requests检索的 HTML 中。您确定之后没有使用 Javascript 加载它吗?print('mbb-offeringID-1' in soup) # False -
打印错误
-
是的,这意味着您要查找的元素在您最初的
requests.get()呼叫中不存在。这可能意味着亚马逊将包含 HTML 内容在页面最初通过 Javascript 加载之后,这意味着无法使用此方法抓取内容。您必须使用 Selenium 等框架模拟运行 Javascript 的浏览器。 -
感谢您的回复。 Selenium 很不错,只是不方便用它切换代理。
标签: python beautifulsoup request