【发布时间】:2019-02-03 17:45:00
【问题描述】:
我正在尝试使用 requests & beautifulsoup 抓取页面的所有 HTML 元素。我正在使用 ASIN(亚马逊标准识别号)来获取页面的产品详细信息。我的代码如下:
from urllib.request import urlopen
import requests
from bs4 import BeautifulSoup
url = "http://www.amazon.com/dp/" + 'B004CNH98C'
response = urlopen(url)
soup = BeautifulSoup(response, "html.parser")
print(soup)
但是output 没有显示页面的整个 HTML,所以我无法进一步处理产品详细信息。 对此有什么帮助吗?
编辑 1:
根据给定的答案,它显示了机器人检测页面的标记。我研究了一下,发现了两种破坏它的方法:
- 我可能需要在请求中添加标头,但我不明白标头的值应该是什么。
- 使用硒。 现在我的问题是,这两种方式都提供同等支持吗?
【问题讨论】:
-
如果您能提供 B004CNH98C 应该是什么,这样人们就可以查看实际页面,那就太好了。我的猜测是一些 html 的东西隐藏在 javascript 函数下。您应该将页面加载到 Selenium 并单击它。
-
同时我刚刚熟悉了 selenium webdriver。每次我尝试抓取每个页面时都会打开一个新的 chrome 窗口吗?
-
使用无头选项。
-
使用 javascript 框架的页面不能被 BS 抓取。既然亚马逊有这么好的 API,为什么还要刮?
-
我认为我的国家不支持 Amazon API
标签: python html web-scraping beautifulsoup python-requests