如何抓取与搜索页面URL相同的结果页面数据?
同URL对应搜索首页/结果页的爬取解决方案
方案1:使用带完整查询参数的GET请求
- 手动在浏览器中执行一次目标搜索,观察地址栏URL变化,绝大多数网站的搜索会将关键词、分页、筛选条件等参数拼接在基础URL后,格式为
https://目标域名/搜索路径?参数名1=参数值1&参数名2=参数值2,直接使用该完整URL作为rvest的请求地址,即可获取对应结果页内容。
方案2:模拟POST提交搜索请求
- 若搜索后地址栏URL无变化,说明网站使用POST方式提交搜索,可按以下步骤操作:
- 打开浏览器开发者工具的「网络」面板,筛选Fetch/XHR类型的请求
- 执行一次搜索操作,找到提交搜索参数的对应接口,复制接口地址、请求头、请求参数
- 使用
httr::POST()函数携带对应参数发起请求,再用rvest解析返回内容即可,参考代码如下:
library(httr) library(rvest) # 以下参数替换为你从开发者工具中抓取的实际内容 search_res <- POST( url = "https://xxx.com/搜索接口地址", add_headers( "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" ), body = list( keyword = "你的搜索关键词", page_num = 1 ), encode = "form" ) # 读取结果页内容 result_page <- read_html(search_res)
方案3:处理JS动态渲染场景
- 若搜索结果由前端JavaScript动态生成,静态请求无法获取渲染后的内容,可改用RSelenium等动态爬取工具,模拟浏览器输入关键词、点击搜索按钮的操作,等待结果加载完成后再提取对应数据即可。
内容的提问来源于stack exchange,提问作者Ellen
相关产品推荐
相关产品推荐

