一、什么是爬虫
通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。
1、爬虫带来的风险可以体现在如下2方面:
- 爬虫干扰了被访问网站的正常运营
- 爬虫抓取了收到法律保护的特定类型的数据或信息
2、爬虫在使用场景中的分类
- 通用爬虫: 抓取系统重要组成部分。抓取的是一整张页面数据。
- 聚焦爬虫: 是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。
- 增量式爬虫: 检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。
3、反爬机制
- 门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。
4、反反爬策略
- 爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户网站中
二、python爬虫request模块
1、requests模块
- python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率极高。 作用:模拟浏览器发请求。
2、request模块如何使用
- 指定url
- UA伪装
- 请求参数的处理
- 发起请求
- 获取响应数据
- 持久化存储
三、爬虫实战
需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据
- import requests
- import json
-
- # 爬取kfc门店地址
- # 爬取url地址
- url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
-
- # UA伪装
- header = {
- 'User-Agent' :'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
- }
- json_list = []
- # 输入参数
- kw = input("enter the keywords:")
- # 组装参数
- for page in range(1,7):
- page = str(page)
- para = {
- 'cname': '',
- 'pid': '',
- 'keyword': kw,
- 'pageIndex': page,
- 'pageSize': '10'
- }
- # 发送post请求
- obj = requests.post(url=url,params=para,headers=header).json()
- json_list.append(obj)
-
- #持久化数据
- fileName = "address.json"
- with open(fileName,'w',encoding="utf-8") as fp:
- json.dump(json_list,fp=fp,ensure_ascii=False)
- print("over")
代码详细地址为:kfc爬取门店代码