我正在尝试使用request.get(url)从服务器获取url的响应。 以下代码适用于搜索结果第一页的网址:
r = requests.get("https://www.epocacosmeticos.com.br/perfumes")
soup = BeautifulSoup(r.text)
但是,当我尝试对搜索结果的第二页的网址使用相同的代码时,即“https://www.epocacosmeticos.com.br/perfumes#2”,
r = requests.get("https://www.epocacosmeticos.com.br/perfumes#2")
soup = BeautifulSoup(r.text)
它返回第一页的响应。它忽略了URL末尾的“#2”。如何获得搜索结果第二页的响应?
答案 0 :(得分:1)
您可以使用BurpSuite之类的网络代理来查看网页发出的请求。当你点击" Page 2"按钮,这是在后台发送的内容:
GET /buscapagina?fq=C%3a%2f1000001%2f&PS=16&sl=f804bbc5-5fa8-4b8b-b93a-641c059b35b3&cc=4&sm=0&PageNumber=2 HTTP/1.1
因此,如果您想正确地抓取网站,这是您需要查询的网址 BurpSuite还允许您使用请求,因此您可以尝试更改请求(例如将2更改为3)并查看是否获得预期结果。
答案 1 :(得分:0)
看来这个网站使用的是动态HTML。因此,第二个结果页面不是"新页面",而是重新加载搜索内容的同一页面。
您可能无法仅使用请求进行裁剪。这可能需要一个浏览器。 Selenium PhantomJS或Headless-Chrome https://plnkr.co/edit/T4HOvXG63ho4ONZoykhp是这项工作的不错选择,之后您可以使用beautifulSoup进行解析。