前言
你好,我是python书生,一个入门小萌新!
项目背景
- 最近,我在爬取视频时,发现大多网站主流反爬虫的手段一般是“IP封锁”,我们为了防止个人IP被禁,想到的就是以IP代理作为第一道防屏蔽策略。
- 网上的一些知识太过于零散,项目代码都达不到想要的效果,所以亲自搭建实战项目,与大家分享!
项目简介
本项目主要基于Python搭建简单爬虫,爬取快代理网站的IP数据,经过有效性验证后输出,方便以后开展更多的爬虫项目,能防止个人IP被封锁。
from xml import etree
import requests
from lxml import etree
import time
import concurrent.futures
import telnetlib
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
'Accept': 'application/json, text/javascript, */*; q=0.01',
}
proxies = {
'Http': 'http://60.205.132.71:80',
'Https': 'http://60.205.132.71:80',
'Http': 'http://183.247.221.119:30001',
'Https': 'http://183.247.221.119:30001',
}
# 获取快代理首页的代理
def get_proxy_list(url):
q = []
w = []
for o in range(url):
url =f"https://www.kuaidaili.com/free/inha/{o+1}/"
text = requests.get(url, headers=headers,proxies=proxies, timeout=(3, 6)).text
html = etree.HTML(text)
ip = html.xpath("//tbody/tr/td[@data-title='IP']/text()")
port = html.xpath("//tbody/tr/td[@data-title='PORT']/text()")
q.append(ip)
w.append(port)
time.sleep(1)
lqs=[]
for iq in q:
for uq in iq:
lqs.append(uq)
lws=[]
for iw in w:
for uw in iw:
lws.append(uw)
return lqs,lws
#测试代理
def id(ip,port):
# print(ip, port)
li=[]
try:
telnetlib.Telnet(ip, port, timeout=3)
# print(f"{ip}:{port}代理IP有效!")
p=f"{ip}:{port}"
print(f"'Http': 'http://{p}',")
print(f"'Https': 'http://{p}',")
except:
# print(f"{ip}:{port}代理IP无效!")
concurrent
if __name__ == '__main__':
url = int(input('请输入要获取多少页:'))
ip,port=get_proxy_list(url)
with concurrent.futures.ThreadPoolExecutor() as executo:
for i in range(len(ip)):
executo.submit(id,ip[i],port[i])
SJ = 30 #脚本获取完ip后等待时间
print(f"{url}页可用代理IP获取完成,{SJ}s后页面关闭。")
time.sleep(SJ)
获取三页并效验完成
F:\python\SoftWareSpace\python\python.exe F:/python/WorkSpace/爬虫1/视频/快代理V23.10.9.py
请输入要获取多少页:3
'Http': 'http://183.247.221.119:30001',
'Https': 'http://183.247.221.119:30001',
'Http': 'http://60.205.132.71:80',
'Https': 'http://60.205.132.71:80',
'Http': 'http://183.247.221.119:30001',
'Https': 'http://183.247.221.119:30001',
'Http': 'http://60.205.132.71:80',
'Https': 'http://60.205.132.71:80',
3页可用代理IP获取完成,30s后页面关闭。
进程已结束,退出代码0
后语
原创内容,转载说明出处哦!
以上内容本人整理,亲测可行,如有任何问题,敬请指正,谢谢~~
点赞、收藏、也欢迎打赏,我弹钢琴你听呀~~哈哈!