requests 使用免费的代理ip爬取网站
import requests
import queue
import threading
from lxml import etree #要爬取的URL
url = "http://xxxxx" #代理ip网站
proxy_url = "https://www.kuaidaili.com/free/inha/{page}/" class MyThreadPool:
def __init__(self, maxsize):
self.maxsize = maxsize
self._pool = queue.Queue(maxsize)
for _ in range(maxsize):
self._pool.put(threading.Thread) def get_thread(self):
return self._pool.get() def add_thread(self):
self._pool.put(threading.Thread) def get_url(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
}
response = requests.get(url,headers=headers)
html_str = response.text
return html_str def proxy_get_url(url,prox):
proxies = {}
proxies["http"] = prox
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
}
response = requests.get(url,headers=headers,proxies=proxies,timeout=3)
html_str = response.text
return html_str def ip_proxy(html_str):
html = etree.HTML(html_str)
ip_list = html.xpath('//tr/td[@data-title="IP"]/text()')
port_list = html.xpath('//tr/td[@data-title="PORT"]/text()')
http_list = []
for i in range(len(ip_list)):
http_proxy = ip_list[i]+":"+port_list[i]
http_list.append(http_proxy)
return http_list def available_ip(ip_list):
for ip in ip_list:
try:
proxy_get_url('https://www.baidu.com/',ip)
except Exception as e:
continue
IP_LIST.append(ip) if __name__ == "__main__":
IP_LIST = []
pool = MyThreadPool(20) #线程池数
#验证代理ip
for i in range(1,20): #页数
page_ip = get_url(proxy_url.format(page=i))
ip_list = ip_proxy(page_ip)
t = pool.get_thread()
obj = t(target=available_ip,args=(ip_list,))
obj.start() #爬取网站
for ip in IP_LIST:
try:
proxy_get_url(url,ip)
except Exception as e:
continue
print(ip)
#使用一个ip爬取网站,如果ip不可用了删除ip
while IP_LIST:
try:
print(IP_LIST[0])
proxy_get_url(url,IP_LIST[0])
except Exception as e:
del IP_LIST[0]
continue
requests 使用免费的代理ip爬取网站的更多相关文章
- 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)
		
分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不 ...
 - 代理IP爬取和验证(快代理&西刺代理)
		
前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳 ...
 - 代理IP爬取,计算,发放自动化系统
		
IoC Python端 MySQL端 PHP端 怎么使用 这学期有一门课叫<物联网与云计算>,于是我就做了一个大作业,实现的是对代理IP的爬取,计算推荐,发放给用户等任务的的自动化系统.由 ...
 - 蚂蚁代理免费代理ip爬取(端口图片显示+token检查)
		
分析 蚂蚁代理的列表页大致是这样的: 端口字段使用了图片显示,并且在图片上还有各种干扰线,保存一个图片到本地用画图打开观察一下: 仔细观察蓝色的线其实是在黑色的数字下面的,其它的干扰线也是,所以这幅图 ...
 - python 实现爬取网站下所有URL
		
python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...
 - 5 使用ip代理池爬取糗事百科
		
从09年读本科开始学计算机以来,一直在迷茫中度过,很想学些东西,做些事情,却往往陷进一些技术细节而蹉跎时光.直到最近几个月,才明白程序员的意义并不是要搞清楚所有代码细节,而是要有更宏高的方向,要有更专 ...
 - Python 利用 BeautifulSoup 爬取网站获取新闻流
		
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
 - Python脚本爬取网站美女照片
		
上次无意之中看到一个网站,里面全是美女的照片,我就心想,哪天有时间了得把这网站的所有美女照片都得爬下来.今天有时间,写了点代码,爬去了网站的所有照片.附上战果!图片实在是太多了,爬半个多小时 先附上所 ...
 - 使用scrapy爬取网站的商品数据
		
目标是爬取网站http://www.muyingzhijia.com/上全部的商品数据信息,包括商品的一级类别,二级类别,商品title,品牌,价格. 搜索了一下,python的scrapy是一个不错 ...
 
随机推荐
- UVA11212-Editing a Book(迭代加深搜索)
			
Problem UVA11212-Editing a Book Accept:572 Submit:4428 Time Limit: 10000 mSec Problem Description ...
 - 复制数据库的Shell命令
			
mysqldump -h$host db_old -uroot -p$pass | mysql -h$host db_new -uroot -p$pass 管道符号,是unix一个很强大的功能,符号为 ...
 - GT常见问题
			
1.需要root? 大部分核心功能都需要root权限.需要root的功能有:FPS.Mem Assistant.Logcat日志.抓包.流畅度获取(未开放). 2.root工具总弹出提示框要确认roo ...
 - Run Redis
			
Cmd window enter console Cd\ E: Cd E:\Graduration\Redis\github Run redis for window 64 After cmd ent ...
 - JAVA Exception
			
博客背景音乐设置 晴天博客(酷)
 - 01-Jenkins-Master节点安装
			
Jenkins安装前需要JDK8,下载最新版本的Jenkins LTS 2.150.防止下载缓慢可以通过清华源进行下载. [root@node1 ~]# wget https://mirrors.tu ...
 - redis底层设计(一)——内部数据结构
			
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
 - 【php增删改查实例】第二十四节 - 文件上传在项目中的具体应用
			
文件上传在项目中,一般有两个用武之地,分别为设置用户的头像和上传附件.本节我们演示如果进行用户头像的上传. 因为一个用户单独并且唯一对应了一个头像,是一对一的关系,所以我们需要去给tm_users表添 ...
 - ASP.NET Core 发布之后通过命令控制监听地址和环境变量
			
添加Command支持 新建一个ASP.NET Core 项目,打开Program.cs 添加下面的代码: public class Program { public static void Main ...
 - Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用
			
概述 Microsoft Tech Summit 2018 微软技术暨生态大会将于10月24日至27日在上海世博中心举行,这也会是国内举办的最后一届 Tech Summit,2019 年开始会以 Mi ...