- 爬虫的分类:
- 通用
- 聚焦
- 增量式:监测
- requests
- 作用:模拟浏览器发请求
- get/post:url,data/params,headers
- 反爬机制:
- robots.txt
- UA检测
- 编码流程:
- 指定url
- 发起请求
- 获取响应数据
- 持久化存储
- get/post返回值:响应对象response
- text:字符串形式的响应数据
- json():返回的是标准的json串
- content:二进制形式的响应数据
- encoding:响应数据的编码
#简易的网页采集器 wd = input('enter a word:') url = 'https://www.sogou.com/web' #将请求参数设定成动态的 param = { 'query':wd } #UA伪装 headers = { 'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1' }
response = requests.get(url=url,params=param,headers=headers) #手动设置响应数据的编码(处理中文乱码的问题) response.encoding = 'utf-8' #text返回的是字符串形式的响应数据 page_text = response.text fileName = wd+'.html' with open(fileName,'w',encoding='utf-8') as fp: fp.write(page_text) print(fileName,'下载成功!!!')
User-Agent:用户代理,http协议中的一部分,属于头域的组成部分,特殊的字符串头
UA检测:门户网站的服务端会检测每一个请求的UA,如果检测到请求的UA为爬虫程序,则请求失败
#爬取肯德基餐厅位置信息 url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' city = input('enter a city name:') data = { "cname": "", "pid": "", "keyword": city, "pageIndex": "1", "pageSize": "10", } headers = { 'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1' } response = requests.post(url=url,data=data,headers=headers) #json() 返回的是一个json对象类型 page_text = response.json() fp = open('./kfc.txt','w',encoding='utf-8') for dic in page_text['Table1']: address = dic['addressDetail'] fp.write(address+'\n') fp.close()