爬虫基础(分类/requests模块使用)

  • 爬虫的分类:
    • 通用
    • 聚焦
    • 增量式:监测
  • 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()

猜你喜欢

转载自www.cnblogs.com/wmh33/p/11040944.html