手把手教你爬取网站信息第二弹(附源码)

首先,我们先拿到“开封菜”的官方网站(需要md5解密)
24757648371537245B0D3648CF8C987C

1. 在抓包⼯具中先定位到和浏览器地址栏的⽹址⼀样的数据包
①在页面中右击鼠标,点击检查,博主这里用的是Google浏览器
②在弹出来的页面中点击Network,然后在餐厅关键字的搜索框中输入一个城市的名字,点击搜索,这时你会发现,在抓包工具的Name框中,会出现一个GetStoreList.ashx文件,这就是我们爬取网站要用的关键信息,点它!!!
在这里插入图片描述
点击Headers,在这里有两个信息需要我们复制在代码中,第一个是包含搜索数据的指定数据包,就是这个一眼就可以看到的Request URL

还有一个是对付网站的UA反爬机制的User-Agent,这个需要把进度条一直拉到最底部,找到之后直接复制就可以

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99
Safari/537.36

在这里插入图片描述
2. 查看请求参数
请求参数一共分两种,get和post,显然此页面的请求⽅式为post请求参数:这一点可以在Headers查看到(如果想看get参数如何处理的,可以去看博主的上一篇文章)
在这里插入图片描述
点击Payload可以查看请求参数,把这一段复制进你的代码里,但是不要忘记加引号。需要注意一下,在抓包⼯具中:Form Data存放的是post请求的请求参数,⽽Query String中存放的是get请求的请求参数,这一点在写代码时要区分开,否则会爬不到
在这里插入图片描述
3. 获取相应数据

获取响应数据
json()可以将获取到的json格式的字符串进⾏反序列化

response = requests.post(url=url,headers=head,data=data)
page_text = response.json()

4.用循环来遍历storeName和addressDetail字段
,这两个字段是网站后台的开发人员命名的,可以在抓包工具的Response中查看到,同时还有存放这些字段信息的Table1
在这里插入图片描述
5.源代码

import requests
head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"
}

data = {
    "cname": "",
    "pid": "",
    "keyword": "北京",
    "pageIndex": "1",
    "pageSize": "10",
}

url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'

response = requests.post(url=url,headers=head,data=data)
page_text = response.json()
for dic in page_text['Table1']:
    name = dic["storeName"]
    address = dic["addressDetail"]
    print(name,address)

6.运行结果
以下是5中的源代码的运行结果
在这里插入图片描述
这时你会发现,为什么只有10条信息?
那是因为我们在请求参数中只让程序爬取了10条信息,而且这个网站也规定了每一页只能显示10条信息,这时我们修改一下请求参数中的pageSize即可,如果想爬其他城市,就修改keyword
那我们来修改一下,再试试看

data = {
    "cname": "",
    "pid": "",
    "keyword": "天津",
    "pageIndex": "1",
    "pageSize": "20",
}

只修改data中的数值即可,其他地方不用改
在这里插入图片描述
成功了!!!
好了,你可以爬全国任意一个城市的门店信息了,想爬多少,爬哪里都你说了算啦(手动狗头)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值