https://github.com/jhao104/proxy_pool
git clone:[email protected]:jhao104/proxy_pool.git
pycharm中打开
安装依赖:创建虚拟环境 pip install -r requirements.txt
修改配置文件: DB_CONN = 'redis://127.0.0.1:6379/0'
运行调度程序和web程序
python proxyPool.py schedule
python proxyPool.py server
api介绍
启动web服务后,默认配置下会开启http://127.0.0.1:5010
api接口服务
api | method | Description | params |
---|---|---|---|
/ | GET | api介绍 | None |
/get | GET | 随机获取一个代理 | 可选参数: ?type=https 过滤支持https的代理 |
/pop | GET | 获取并删除一个代理 | 可选参数: ?type=https 过滤支持https的代理 |
/all | GET | 获取所有代理 | 可选参数: ?type=https 过滤支持https的代理 |
/all | GET | 获取所有代理 | 可选参数: ?type=https 过滤支持https的代理 |
/count | GET | 查看代理数量 | None |
/delete | GET | 删除代理 | ?proxy=host:ip |
http和https代理
- 以后使用http代理访问http的地址
- 使用https的代理访问https的地址
python manage.py runserver 0.0.0.0:8000
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)
代理有 透明和高匿
透明的意思:使用者最终的ip是能看到的
高匿:隐藏访问者真实ip,服务端看不到
目标:爬取该网站的视频,保存到本地 https://www.pearvideo.com/
请求地址是:https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0
import requests
import re
res = requests.get('https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0')
# 解析出视频地址---》正则
video_list = re.findall('', res.text)
for video in video_list:
video_id = video.split('_')[-1]
url = 'https://www.pearvideo.com/' + video
header = {
'Referer': url
}
res_json = requests.get(f'https://www.pearvideo.com/videoStatus.jsp?contId={video_id}&mrd=0.14435938848299434',
headers=header).json()
mp4_url = res_json['videoInfo']['videos']['srcUrl']
real_mp4_url = mp4_url.replace(mp4_url.split('/')[-1].split('-')[0], 'cont-%s' % video_id)
# 把视频保存到本地
res_video = requests.get(real_mp4_url)
with open('./video/%s.mp4' % video_id, 'wb') as f:
for line in res_video.iter_content(1024):
f.write(line)
import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.autohome.com.cn/news/1/#liststart')
# 找到页面中所有的类名叫article ul标签
soup = BeautifulSoup(res.text, 'html.parser')
# bs4的查找
ul_list = soup.find_all(class_='article', name='ul')
for ul in ul_list:
li_list = ul.find_all(name='li')
for li in li_list:
h3 = li.find(name='h3')
if h3:
title = h3.text
url = 'https:' + li.find(name='a')['href']
desc = li.find(name='p').text
reade_count = li.find(name='em').text
img = li.find(name='img')['src']
print(f'''文章标题:{title}
文章地址:{url}
文章摘要:{desc}
文章阅读数:{reade_count}
文章图片:{img}''')