注意这里是ajax的post方法
首先分析url,发现我们在切换页码的时候,url没有任何变化,只有表单数据中的pageindex发生了变化(这里爬取的是青岛的门店地址)
所以url无需变化,只需要更改data就可以了
import urllib.requestimport urllib.parseurl="http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname"headers={ #这里填自己的ua "User-Agent":""}#请求对象定制def getrequest(page): #post请求,首先进行请求对象的定制 data = { "cname": "青岛", "pid": "", "pageIndex": page, "pageSize": "10" } data=urllib.parse.urlencode(data).encode("utf-8") request=urllib.request.Request(url=url,headers=headers,data=data) return request#获取请求数据def getcontent(request): response=urllib.request.urlopen(request) content=response.read().decode("utf-8") return content#下载def download(page,content): fp=open("kfc"+str(page)+".json","w",encoding="utf-8") fp.write(content)if __name__ == '__main__': startpage=int(input("请输入起始页:")) endpage=int(input("请输入终止页")) for page in range(startpage,endpage+1): request=getrequest(page) content=getcontent(request) download(page,content)
爬取结果:
与官网的数据相对应