一、代理池搭建
1、频繁爬网站,ip容易被封
# ip代理
-每个设备都会有自己的IP地址
-电脑有ip地址---》访问一个网站---》访问太频繁---》封ip
-收费:靠谱稳定--提供api
-免费:不稳定--自己写api用
-开源的:https://github.com/jhao104/proxy_pool
免费代理---》爬取免费代理---》验证---》存到redis中
flask搭建web---》访问某个接口,随机获取ip
# 搭建步骤:
1 git clone git@github.com:jhao104/proxy_pool.git
2 pycharm中打开
3 安装依赖:创建虚拟环境 pip install -r requirements.txt
4 修改配置文件: DB_CONN = 'redis://127.0.0.1:6379/0'
5 运行调度程序和web程序
# 启动调度程序
python proxyPool.py schedule
# 启动webApi服务
python proxyPool.py server
6 api介绍
/ GET api介绍 None
/get GET 随机获取一个代理 可选参数: ?type=https 过滤支持https的代理
/pop GET 获取并删除一个代理 可选参数: ?type=https 过滤支持https的代理
/all GET 获取所有代理 可选参数: ?type=https 过滤支持https的代理
/count GET 查看代理数量 None
/delete GET 删除代理 ?proxy=host:ip
# http和https代理
-以后使用http代理访问http的地址
-使用https的代理访问https的地址
二、代理池使用
1、
import requests
res = requests.get('http://192.168.1.252:5010/get/?type=http').json()['proxy']
proxies = {
'http': res,
}
print(proxies)
# 我们是http 要使用http的代理
respone = requests.get('http://139.155.203.196:8080/', proxies=proxies)
print(respone.text)

# 步骤:
1 写个django,只要访问,就返回访问者ip
2 部署在公网上---》python manage.py runserver 0.0.0.0:8000
3 本机使用代理测试
import requests
res1 = requests.get('http://192.168.1.63:5010/get/?type=http').json()
dic = {'http': res1['proxy']}
print(dic)
res = requests.get('http://47.93.190.59:8000/', proxies=dic)
print(res.text)
# 补充:
代理有 透明和高匿
透明的意思:使用者最终的ip是能看到的
高匿:隐藏访问者真实ip,服务端看不到
三、爬取视频网站
1、
2、
四、爬取新闻
1、
2、
五、bs4介绍喝遍历文档树
1、
2、