Python网络爬虫如何获取页面全部搜索结果?
嘿,作为Python爬虫新手碰到这种「URL不动但内容偷偷加载」的情况太常见啦!我来帮你一步步搞定抓取全部150条结果的问题~
第一步:揪出真实的数据接口
这个页面选「全部」时没刷新URL却能加载更多内容,说明它是通过AJAX异步请求获取数据的,咱们得找到这个背后的接口:
- 打开目标页面,按F12调出浏览器开发者工具,切换到「Network」标签页
- 把页面上的显示选项改成「全部」,这时Network里会弹出新的请求,优先看「XHR」或「Fetch」类型的
- 点开这个请求,查看它的「Request URL」(就是真实接口地址)、请求方法(一般是POST)以及携带的参数(比如可能有
showAll=1或者rows=150这类控制条数的字段)
第二步:用Python发送请求获取数据
首先确保你装了requests库,没装的话先跑:
pip install requests
然后写代码模拟请求,示例如下(记得替换成你找到的真实接口和参数):
import requests # 替换成你在Network里找到的真实接口URL api_url = "这里填接口地址" # 替换成请求里的参数,比如PageID、控制显示全部的字段 payload = { "PageID": "33", "showAll": "1", # 其他你看到的必要参数都加上 } # 模拟浏览器请求头,避免被反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } # 发送请求 response = requests.post(api_url, data=payload, headers=headers) # 检查请求是否成功 if response.status_code == 200: print("请求成功!开始解析数据~") else: print(f"请求翻车啦,状态码:{response.status_code}")
第三步:解析数据提取链接
接下来要看接口返回的是HTML还是JSON:
如果返回的是HTML
装个beautifulsoup4来解析:
pip install beautifulsoup4
然后写解析代码:
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, "html.parser") # 找到所有结果里的链接,这里要根据页面实际的HTML结构调整,比如找特定class的<a>标签 result_links = soup.find_all("a", href=True) for link in result_links: # 把相对链接拼成完整URL full_link = "https://www.nalpcanada.com/" + link["href"] print(full_link)
如果返回的是JSON
直接解析JSON数据就行:
data = response.json() # 假设链接在results数组的每个item里的url字段,根据实际结构调整 for item in data["results"]: full_link = "https://www.nalpcanada.com/" + item["url"] print(full_link)
小提醒
- 记得加请求头,尤其是
User-Agent,不然容易被网站当成机器人拦截 - 如果遇到403错误,可以把浏览器里的Cookie复制到headers里试试
- 别疯狂请求,加个
time.sleep(1)之类的延时,给服务器留口气~
内容的提问来源于stack exchange,提问作者Fitzy
相关产品推荐
相关产品推荐

