我遇到了一个关于抓取 ajax 加载网站的主要问题。我在网上搜索以找到解决方案,并发现在开发人员模式下检查 XHR。但是,当我尝试在我的代码中使用查询字符串参数时,却没有成功。谁能告诉我怎么做?
XHR 查询字符串参数如下:
/data/bbc-morph-lx-commentary-data-paged/about/1d62d302-53c9-4f79-b281-62993210e174/isUk/false/limit/20/nitroKey/lx-nitro/pageNumber/7/version/1.5.4?timeout=5
这是我的代码。它只会从第一页抓取链接。
url="https://www.bbc.com/news/topics/c87z0we2g0zt/coronavirus-vaccines"
data={'about':'','isUk':'','limit':'20','nitroKey':'lx-nitro','pageNumber':3,'version':''}
req=requests.session()
req=requests.get(url,params=data,headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'})
req_content=req.content
bsObj=BeautifulSoup(req_content, 'html5lib')
coverpage_news=bsObj.find_all("li",{"class": "lx-stream__post-container"})
for n in np.arange(0, 19):
# Getting the link of the article
link = "https://www.bbc.com"+coverpage_news[n].find("div",attrs={'class':'gs-o-media__body'}).find('a')['href'].strip()
list_links.append(link)