网页爬取主要的是对网页内容进行分析,这是进行数据爬取的先决条件,因此博客主要对爬取思路进行下解析,自学的小伙伴们可以一起来学习,有什么不足也可以指出,都是在自学Ing,回归正题今天我们要来爬取百度搜索相关的网页。
首先我们打开度娘,进行搜索
首页网址为:https://www.baidu.com/s?wd=%E6%95%B0%E6%8D%AE&rsv_spt=1&rsv_iqid=0x93e76171000312b4&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=6&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=778&rsv_sug4=1116
接着我们点击第二页可以看到网址变更为:https://www.baidu.com/s?wd=数据&pn=10&oq=%E6%95%B0%E6%8D%AE&tn=baiduhome_pg&ie=utf-8&usm=2&rsv_idx=2&rsv_pq=f30ff13f00000cf7&rsv_t=4810mKq3P%2BTmHDnRmpF1eE9P0PvsFC5IpcU%2BHHNq51IATNTDhmKSM1%2Bbr%2BiWFPGYJALE
可以看出搜索栏的数据由wd=数据控制,接着进行第三页、四页、五页点击可以看到pn从第二页的10变成20、30、40,我们可以进行验证:
删掉多余的后缀变为https://www.baidu.com/s?wd=数据&pn=0,可以看到输入wd=数据&pn=0时候为第一页,可以多试一些数,发现只要小于10的数,即为首页,
因此可以得出 页数=页数*10-10为搜索对应页码的pn码,
可以写出相应代码获取不同页面:
def get_url(wd,num):
s = requests.session()
#第1页为小于10的数字 10为第2页,20为第三页,30为第四页,以此类推
num=num*10-10
for i in range(-10, num, 10):
url = 'https://www.baidu.com/s'# 点击界面第二页可以看到网页变化截取关键部分 https://www.baidu.com/s?wd=python&pn=10
params = {
"wd": wd,
"pn": i,
}
r = s.get(url=url, headers=headers, params=params)
print("返回状态码:",r.status_code) #可以看对应Js 正常网页访问时候 status状态码 为200
time.sleep(1 + (