csdn上大多数的2345天气爬虫都是用的老旧接口,虽然接口还没有关闭,但是在整个访问通信过程中已经看不到像 http://tianqi.2345.com/t/wea_history/js 这种旧接口的影子了。
搜寻接口
打开chrmoe的network工具,刷新找找可以的接口。由于通信数据可能是编码后的,所以搜索汉语一般不奏效。观察天气数据发现会有2021,于是搜索2021,出现唯一接口
打开接口发现是Unicode编码的json数据。
接口参数
接口共有四个字段,分别是areaInfo[areaId],areaInfo[areaType],date[year],date[month]。
http://tianqi.2345.com/Pc/GetHistory?areaInfo[areaId]=349727&areaInfo[areaType]=1&date[year]=2021&date[month]=2
第一个是地区编号,不是很好找,但是在通信过程中发现interCitySelectData2.js里面全是一些国际城市的编号,国内城市的编号在citySelectData2.js里。
http://tianqi.2345.com/tqpcimg/tianqiimg/theme4/js/citySelectData2.js
http://tianqi.2345.com/tqpcimg/tianqiimg/theme4/js/interCitySelectData2.js
第二个areaInfo[areaType]意义不明,去掉也可以正常返回。后面两个就是年份和月份。
全部代码
以爬取纽约为例,别的城市按照上面的链接寻找编号并修改即可。
import requests
import re
import json
from bs4 import BeautifulSoup
import pandas as pd
months = [1,2,3