学习路线图
爬虫:
1.页面请求库(requests,),
2.数据提取(xpath,bs4,re正则)
3.数据存储(文本格式txt,.csv,.json,mysql,mongodb,redis)
4.动态页面的处理:selenium+浏览器,分析请求响应过程(ajax)
5.验证码:
6.cookie池和代理ip池
7.scrapy框架
8.分布式爬取:scrapy-redis组件,celery分布式框架
9.scrapy项目部署:scrapyd
10.数据去重策略
数据分析:数据分析概论,numpy类库,pandas库,matplotib库
数据结构和算法:时间复杂度,算法,常见的数据结构,链表,双向链表,栈,队列,双端队列,树,排序算法,搜索
人工智能:人工智能简介,机器学习和深度学习,机器学习开发流程,常见框架,特征工程,常见的算法
安装:
pip install virtualenv
pip install virtualenvwrapper-win
在D盘创建文件:D:\python\virtualenv,然后配置到环境变量中
重新打开cmd窗口:输入>mkvirtualenv env1
![]()
爬虫:是一个程序或一个脚本,能够按照一定的规则批量爬取数据
爬虫分类:
通用爬虫:搜索引擎的(百度自动爬取整个互联网),
聚焦爬虫:聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
增量爬虫:更新,维护一个已有的网页的集合
深度爬虫:url地址的检索深度,起始URL----筛选进入下一波URL.....(多次爬虫)
爬虫步骤:
网页抓取,数据提取(标题,作者等用xpanth,bs4,re正则),数据存储
HTTP协议:
超文本传输协议,互联网上应用最为广泛的协议
默认端口80,基于TCP/IP通信协议来传递数据,应用层
HTTPS:
HTTP的安全版,在HTTP下加入SSL层。
SSL主要用于web的安全传输协议,在传输
默认端口443
requests库
python编写,基于urllib,自称让HTTP服务人类
requests库特性:
支持HTTP连接的保持和连接池,
支持使用cookie保持会话,
支持文件上传,
支持自动确定响应内容的编码,
支持过程国际化的URL和POST数据自动编码
get和post区别:
get参数以键值对拼接在地址栏上,参数数量有限,不安全,可以收藏
post参数在请求头,参数数量理论上没有限制,相对安全,不可以收藏
chardet解码
常见的反爬措施:
1.检测'User-Agent': 'python-requests/2.21.0'
2.检测非人行为,封禁IP地址
3.登录限制
绕过反爬的策略:
1.伪造'User-Agent':"常见的浏览器User-Agent"
2.a:设置随机的延时时间,b:设置代理IP(分类:透明,高匿,付费)
3.模拟登录:使用登录之后的cookies信息
get和post参数
1.url,
2.可选herders参数(设置用户代理)
3.timeout:设置超时时间
4.拼接url参数:get有params, post有data
5.proxies代理ip
缓存:
1.cookies客户端,安全性不高,保存登陆之后的信息
2.sission服务器,密码安全数据等
"""
2、 什么是 http 协议?
超文本传输协议,基于TCP/IP通信协议来传递数据,应用层
浏览器作为HTTP客户端通过URL向http服务端(web服务端)发送请求,
web服务端根据接受的请求,向http客户端发送响应
3、 http 和 https 的区别?
http默认端口80,不安全,明码传输,
https默认端口443,加了ssl层加密传输 保障数据安全,需要ca认证
4、 如何审查页面元素?
浏览器中查看网络代码,点击右键检查(F12)
5、 get 方法和 pos 方法的区别?
get参数以键值对拼接在地址栏上,参数数量有限,不安全,可以收藏
post参数在请求头,参数数量理论上没有限制,相对安全,不可以收藏
6、 常见的状态码有哪些?
200 成功
300 重定向
400 调用没有默认值的get_argument函数
404 服务器错误
405 如果传入的请求使用了RequestHandler中没有定义的
HTTP方法 500 客户端错误
7、什么是爬虫?爬虫有哪些分类?
爬虫:
是一个程序或一个脚本,能够按照一定的规则批量爬取数据
爬虫分类:
通用爬虫:搜索引擎的(百度自动爬取整个互联网),
聚焦爬虫:聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
增量爬虫:更新,维护一个已有的网页的集合
深度爬虫:url地址的检索深度,起始URL----筛选进入下一波URL.....(多次爬虫)
8、 数据爬取的步骤有哪些?
网页抓取,数据提取(标题,作者等用xpanth,bs4,re正则),数据存储
"""
# 9、案例:百度模拟搜索“长城”
import requests
kw = {"wd": "长城"}
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
response = requests.get("http://tieba.baidu.com/?", params=kw, headers=headers)
print(response.text)
# 10、案例:用cookie模拟登陆人人网
import requests
headers = {"Cookie": "anonymid=jtoec891-vfkewi; depovince=HEN; jebecookies=fc60bf68-02ff-4c3a-ad5d-30b46c6d0d9d|||||; _r01_=1; JSESSIONID=abcjjXTklSYtH4onNe1Mw; ick_login=6d1788b4-443d-48ba-99bb-98075aedff86; _de=32B20555AD3784A6BF2D3D01B72FE013; p=a5789dbe5b40a071397f6944fee2a4de2; first_login_flag=1; ln_uact=17752558702; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; t=cf965e59d474ac0691d42228550582ec2; societyguester=cf965e59d474ac0691d42228550582ec2; id=966924492; xnsid=4aed4a13; ver=7.0; loginfrom=null; jebe_key=2173c408-6000-4437-9054-59fe28e0350a%7C077a3e2b1c00096d5c13732ceee74ce5%7C1553521102769%7C1%7C1553521103042; wp_fold=0", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
response = requests.get("http://www.renren.com/966924492", headers=headers)
print(response.text)