无需Selenium爬取盖茨黑德议会网站垃圾收集日期方法咨询
不用Selenium爬取盖茨黑德议会垃圾收集日期的方法
步骤1:获取会话Cookie
打开目标页面,按F12调出开发者工具,切换到「Application」面板,在左侧「Cookies」栏找到网站域名,记下ASP.NET_SessionId的Cookie值——这就是后续请求必需的会话标识,所有接口请求都得带上它。
步骤2:定位地址搜索API接口
在页面输入一个本地地址关键词(比如常见街道名)并点击搜索,同时切到开发者工具的「Network」面板,筛选「XHR」类型请求,找到带地址搜索逻辑的请求(URL里通常会有AddressSearch这类关键词)。
重点记录这个请求的:
- 请求方法(大多是POST)
- 完整请求URL
- 请求体格式(Form Data或JSON,包含你输入的地址关键词)
- 请求头里的
Cookie字段(需包含ASP.NET_SessionId)
步骤3:请求地址列表,提取目标地址ID
用Python的requests库或curl发送地址搜索请求,拿到返回的地址列表后,从中找到你需要的地址对应的唯一ID(字段名可能是Uprn或Id)。
示例Python代码:
import requests # 初始化会话,自动获取会话Cookie session = requests.Session() session.get("https://www.gateshead.gov.uk/article/3150/Bin-collection-day-checker") # 发送地址搜索请求,替换成你找到的真实接口URL search_url = "https://www.gateshead.gov.uk/xxx/AddressSearch" payload = {"searchTerm": "你的目标地址关键词"} response = session.post(search_url, json=payload) # 解析返回的地址数据,提取目标地址ID addresses = response.json() target_address_id = addresses[0]["Uprn"] # 根据实际返回结果调整索引和字段名
步骤4:请求垃圾收集日期数据
回到「Network」面板,找到选择地址后加载收集日期的请求,记录其URL、请求方法和携带地址ID的请求体,然后发送请求获取数据。
示例Python代码:
# 替换成真实的收集日期接口URL collection_url = "https://www.gateshead.gov.uk/xxx/GetCollectionDates" payload = {"uprn": target_address_id} collection_response = session.post(collection_url, json=payload) # 解析并输出收集日期 collection_dates = collection_response.json() for item in collection_dates: print(f"{item['BinType']} 下次收集日期: {item['NextCollectionDate']}")
注意事项
- 会话Cookie可能过期,如果请求失败,重新访问页面获取新的
ASP.NET_SessionId即可。 - 控制请求频率,避免触发网站反爬限制。
- 部分接口可能需要额外请求头(比如
Referer、X-Requested-With),可从开发者工具的请求头里复制补充到代码中。
内容的提问来源于stack exchange,提问作者LogicTom
相关产品推荐
相关产品推荐

