爬虫简介,request库的使用

519 阅读5分钟
网络爬虫


D:模拟客户端(一般指浏览器)发送网络请求,获取对应的响应,一般按照一定的规则,自动的抓取互联网信息的程序。


E:数据采集,软件测试,其他用途(抢票,刷票,短信轰炸等)


分类:


通用爬虫
:通常指搜索引擎和大型web服务提供商的爬虫


聚焦爬虫
:针对特定网站,获取所需数据的爬虫,又分为三大类


1.累计式爬虫:从开始到结束不断爬取数据,过程会进行去重操作
2.增量式爬虫:已下载网页,爬取网页变化数据,或者只爬取新生成的网页的爬虫
3.深网爬虫:不能通过静态链接获取、隐藏在搜索表单后,只有用户登录或提交数据才能获取数据的爬虫。

通用搜索引擎的局限性:


①·所返回的网页内容90%无用


②中文检索引擎理解困难


③信息占有量和覆盖率有局限


④以关键字搜索为主,图片,数据库,音频,多媒体等不太支持


⑤搜索的社区化和个性化不好,没有考虑人的地域,性别,年龄的差别


⑥抓取动态网页效果不好



ROBOTS协议


D:“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。


存在位置:robots.txt文件应该放置在网站根目录下
聚焦爬虫原理


C:/Users/Jowell520home/AppData/Local/YNote/data/m13560452744@163.com/9aa6e623e7e0410f9f49ed38002a2c21/clipboard.png

HTTP和HTTPS的区别:


HTTPS相对于HTTP在应用层(HTTP)和传输层(TCP)加了一个SSL(安全套接字层),HTTPS比HTTP更安全,但性能更差




Get请求与Post请求的区别:


请求方法

GET

POST

作用

用来请求资源

用来传输实体数据

传输数据大小

小,2M


实体数据存放位置

url

请求体

HTTP常见请求头:
1. Host (主机和端口号)
2. Connection (链接类型)
3. Upgrade-Insecure-Requests (升级为HTTPS请求)
4.

User-Agent

(用户代理) 服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等
5. Accept (传输文件类型)
6.

Referer

页面跳转处,从何处来到当前页面,可用于防爬和防盗链
7. Accept-Encoding 浏览器支持的编码类型,主要的编码格式就是压缩格式gzip compress deflate
8.

Cookies

: 用于进行状态保持,通常也可用于识别用户身份
9. x-requested-with : XMLHttpRequest 是Ajax 异步请求


Reqests


D:是用python编写的,基于urllib封装的开源http库,提高我们的效率


E:发送网络请求,获取返回的响应数据


U:①安装requests包并导包:pip3 install requests import requests


②通过发请求获取响应对象:response =requests.get(url)


③response的常用方法:


1.response.status_code 获取状态码
2.response.headers 获取响应头
3.response.request 获取响应对应的请求
4.response.text 获取str类型的响应,推测文本编码,可能出现乱码
5.respones.content 获取bytes类型的响应,可decode()解码获取字符串

注意点:
①请求需带上headers:模拟浏览器,获取和浏览器一致的内容
response =request.get(url,headers =headers) --------headers是一个字典形式,一般UA必带
②带参数的请求:params=params作为参数去发请求,也是一个字典形式。
③发送post请求:data =data 作为参数去发请求,也是一个字典形式

IP代理


D:即代理服务器,其功能主要就是代理网络用户去获取网络信息,形象的说就是网络信息的中转站


E:模拟多个用户请求,非同一个用户,防止因为ip发送请求过多而被反爬;防止我们的真实地址被泄露,防止被追究


U:注意:键必须根据代理的实际类型进行设置


proxies = {
"http": "http://12.34.56.79:9527",
"https": "https://12.34.56.79:9527",
}
requests.get(url, proxies=proxies)

Cookie和Session


带上cookie、session好处:很多网站必须登录之后(或者获取某种权限之后)才能请求到相关数据


带上cookie、session的弊端:一套cookie和session往往和一个用户对应.请求太快,请求次数太多,容易被服务器识别为爬虫。从而是账号收到损害。


使用建议:


1.不需要cookie的时候尽量不去使用cookie


2.为了获取登录之后的页面,我们必须发送带有cookies的请求,此时为了确保账号安全应该尽量降低数据采集速度


U:Cookie使用:请求头添加cookie或设置字典 cookie =cookie作为参数去发请求


Session使用:①实例化session对象:session = requests.Session()


②使用session对象发送请求:session.get(url)



requests小技巧


1. cookiesjar与字典之间的相互转换


reqeusts.utils.dict_from_cookiejar 把cookiejar对象转化为字典格式的cookies
requests.utils.cookiejar_from_dict 把字典格式的cookies转换成cookiejar对象

2. 请求 SSL证书验证


使用场景:Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出 SSLError
使用方式: response = requests.get("https://www.12306.cn/mormhweb/ ", verify=False)

3. 设置超时


使用场景:有些站点或者代理反应慢,严重降低效率,这个时候可以设置超时
使用方式:response = requests.get(url,timeout=10)

更多技术资讯可关注:gzitcast