爬虫的初始和requests模块基础用法

1.爬虫相关概念

1.什么是爬虫

  就是通过编写程序模拟浏览器上网,然后让其去互联网上爬取数据的过程

2.爬虫的分类

  • 通用爬虫

    • 抓取互联网中的一整张页面数据

  • 聚焦爬虫

    • 抓取页面中局部数据

  • 增量式爬虫

    • 用来检测网站数据更新的情况,以便爬取到网站最新出来的数据

3.爬虫合法吗

  • 爬虫数据的行为风险的体现

    • 爬虫干扰了被访问网站的正常运营

    • 爬虫抓取了受到法律保护的特定类型的数据或者信息

  • 规避风险

    扫描二维码关注公众号,回复: 8439008 查看本文章
    • 严格遵守网站设置的robots协议;

    • 在规避反爬虫措施的同时,需要优化自己的代码,避免干扰被访问网站的正常运行;

    • 在使用、传播抓取到的信息时,应审查所抓取的内容,如发现属于用户的个人信息、隐私或者他人的商业秘密的,应及时停止并删除。

4.robots协议:文本协议

  特性:防君子不防小人的文本协议

2.requests 模块的基础用法

1.requests模块

  python中封装好的一个基于网络请求的模块

2.requests模块的作用

  用来模拟浏览器发送请求

3.requests模块的环境安装:

pip3 install requests

4.requests模块的编码流程

1.指定url

2.发起请求

3.获取数据

4.数据持久化(存储)

5.实例:

1.爬取搜狗首页的页面源码数据

import requests
# 1.指定url url = 'https://www.sogou.com/'
# 2.请求发送get,get返回值是一个响应对象 response = requests.get(url=url)
# 3.获取响应数据 page_text = response.text #返回的是字符串形式的响应数据

# 4.数据持久化 with open("sogou.html","w",encoding="utf_8") as fp: fp.write(page._text)

2.实现一个简单的网页采集器

# 需要让url携带的参数动态化
url = 'https://www.sogou.com/web'
# 实现参数动态化
wd= input('enter a key:')
params = {
    'query':wd
}
# 在请求中需要将请求参数对应的字典作用奥params这个get方法的参数中
response = request.get(url=url,parmas=params)
page_text = response.text
filename = wd + ".html"
with open(filename,"w",encoding='utf-8') as fp:
    fp.write(page_text)

执行上述代码之后发现

  • 出现了乱码
  • 数据量级不对  

解决乱码

url = 'https://www.sogou.com/web'
#实现参数动态化
wd = input('enter a key:')
params = {
    'query':wd
}
# 在请求中需要将请求参数对应的字典作用到params这个get方法的参数中
response = requests.get(url=url,params=params)
response.encoding = 'utf-8' # 修改响应数据的编码格式
page_text = response.text
fileName
= wd+'.html' with open(fileName,'w',encoding='utf-8') as fp: fp.write(page_text)

请求载体身份标识的伪装:

  • User-Agent:请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,使用爬虫程序发起的请求,则该请求的载体为爬虫程序,则该请求的User-Agent为爬虫程序的身份标识。可以通过判断该值来获知该请求的载体究竟是基于哪款浏览器还是基于爬虫程序。

  • 反爬机制:某些门户网站会对访问该网站的请求中的User-Agent进行捕获和判断,如果该请求的UA为爬虫程序,则拒绝向该请求提供数据。

  • 反反爬策略:将爬虫程序的UA伪装成某一款浏览器的身份标识。

解决UA 检测

待续

猜你喜欢

转载自www.cnblogs.com/zangyue/p/12156796.html
今日推荐