【发布时间】:2021-02-07 08:36:51
【问题描述】:
我想把刚刚拨号搜索结果页面的所有结果都刮掉。但我只得到前 10 个结果,因为它使用延迟加载。
import requests
from bs4 import BeautifulSoup
url = 'https://www.justdial.com/Kolkata/Travel-Agents/nct-10496380/page-2'
header = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}
r = requests.get(url,headers=header,verify=False)
但是使用它我只能得到 10 个结果,但我需要该页面的所有结果。 它在延迟加载期间点击以下 URL 'https://www.justdial.com/functions/ajxsearch.php?national_search=0&act=pagination_new&city=Kolkata&search=Travel%20Agents&where=&catid=0&psearch=&prid=&page=3&SID=&mntypgrp=0&toknbkt=&bookDate=&jdsrc=&median_latitude=22.562968864829 &median_longitude=88.389698473675&ncatid=10496380&mncatname=Travel%20Agents&dcity=加尔各答&pncode=999999&htlis=0'
当我使用此 URL 时,它会返回一个空白列表。 我该如何解决这个问题?
【问题讨论】:
-
使用
selenium和beautifulsoup。搜索“如何抓取动态网站” -
您是否尝试监视网络以查看它们如何将数据加载到页面?
Developer Tools>Network选择XHR并刷新页面。向下滚动直到刷新,然后监控网络。模拟带有请求的调用。 -
@PraysonW.Daniel 是的,我做到了,从那里我得到了当我向下滚动时被点击的 ajax URL。你能告诉我如何使用请求模块来做到这一点吗?有可能吗?
-
DevTools 上有响应数据吗?它只打 GET 电话吗?我现在不在电脑上:(
-
@PraysonW.Daniel 是的,但通过请求模块调用它时返回空白列表
标签: python web-scraping beautifulsoup python-requests data-mining