注意这里是ajax的post方法
首先分析url,发现我们在切换页码的时候,url没有任何变化,只有表单数据中的pageindex发生了变化(这里爬取的是青岛的门店地址)
所以url无需变化,只需要更改data就可以了
import urllib.request
import urllib.parse
url="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)
爬取结果:
与官网的数据相对应