首页 > 编程语言 >python 爬虫 获取IP代理池

python 爬虫 获取IP代理池

时间:2022-12-18 17:00:46浏览次数:37  
标签:python IP list 爬虫 text proxy ip print td

 1 import requests
 2 from lxml import etree
 3 
 4 def request_header():
 5     headers = {
 6         'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" #谷歌浏览器
 7     }
 8     return headers
 9 
10 '''
11 创建两个列表用来存放代理ip
12 '''
13 all_ip_list = []  #用于存放从网站上抓取到的ip
14 usable_ip_list = [] #用于存放通过检测ip后是否可以使用
15 
16 
17 def send_request():
18     #爬取7页,可自行修改
19     for i in range(1,8):
20         print(f'正在抓取第{i}页……')
21         response = requests.get(url=f'http://www.ip3366.net/free/?page={i}', headers=request_header())
22         text = response.text.encode('ISO-8859-1')
23         # print(text.decode('gbk'))
24         #使用xpath解析,提取出数据ip,端口
25         html = etree.HTML(text)
26         tr_list = html.xpath('/html/body/div[2]/div/div[2]/table/tbody/tr')
27         for td in tr_list:
28             ip_ = td.xpath('./td[1]/text()')[0] #ip
29             port_ = td.xpath('./td[2]/text()')[0]  #端口
30             proxy = ip_ + ':' + port_   #115.218.5.5:9000
31             all_ip_list.append(proxy)
32             test_ip(proxy)      #开始检测获取到的ip是否可以使用
33     print('抓取完成!')
34     # print(f'抓取到的ip个数为:{len(all_ip_list)}')
35     print(f'可以使用的ip个数为:{len(usable_ip_list)}')
36     print('分别有:\n', usable_ip_list)
37 #检测ip是否可以使用
38 def test_ip(proxy):
39     #构建代理ip
40     proxies = {
41         "http": "http://" + proxy,
42         "https": "http://" + proxy,
43     }
44     try:
45         response = requests.get(url='https://www.baidu.com/',headers=request_header(),proxies=proxies,timeout=1) #设置timeout,使响应等待1s
46         response.close()
47         if response.status_code == 200:
48             usable_ip_list.append(proxy)
49             print(proxy, '\033[31m可用\033[0m')
50             # 这里完成程序.............................
51         else:
52             print(proxy, '不可用')
53     except:
54         print(proxy,'请求异常')
55 
56 if __name__ == '__main__':
57     send_request()

 

标签:python,IP,list,爬虫,text,proxy,ip,print,td
From: https://www.cnblogs.com/zhang-dan/p/16990563.html

相关文章

  • (AtCoder Beginner Contest 282) D - Make Bipartite 2(二分图)
    题目大意:给定一个n个点m条边的图,请你在其中加一条边使得整个图G是二分图,问有多少种可能。(已有的边不能加)解题思路:首先我们要知道,二分图内是没有长度为奇数的回路的所......
  • .net 类似python写法例子
    1//[3]*102Enumerable.Range(0,10).ToArray();34//[X*2forxinrange(5)ifx%3==0]5Enumerable.Range(0,5).Select(x=>x*2).ToArray();67//m......
  • python load数据时出现各种问题
    data_raw=np.load(data_path,allow_pickle=True).item() 1..  2.pickle.load的时候出现EOFError:Ranoutofinput解决方法:删掉该条数据即可。......
  • 新版微社群微信付费入群vip社群空间站带分销付费进群PHP源码架构分析
    付费报名群系统。支持创建各种付费群、吃瓜、创业、资源等。支付对接第三方易支付或码支付,可对接任何易支付平台。群码可在后台直接上传,简单易操作。不需要公众号,不需要商家......
  • Linux桌面系统解压Windows用户发来的zip压缩包乱码
    现象Linux桌面用户大多数都遇到这个问题,对Windows桌面用户发来的zip压缩包,双击打开或者解压,发现中文文件名和路径都是乱码。通过命令行unzip解压也会得到一样的结果:1......
  • python控制数字精度
    python控制数字精度在我们考试的时候,总会出现让我们保留几位小数的情况,这里我们直接使用round()函数round(想保留小数的变量,保留几位小数)默认是四舍五入成整数,后面即......
  • javaScript随机图片
    <scripttype="text/javascript">//<!CDATA[varpic=[];pic[0]="链接";pic[1]="链接";pic[2]="链接";pic[3]="链接";varr......
  • 漏洞实战部分2-安卓应用ZipEntry对象问题实战
    安卓应用漏洞学习本节课介绍ZipEntry对象,这个对象常用于解压压缩包操作。//ThisclassisusedtorepresentaZIPfileentry.//Author://DavidConnellypubliccla......
  • Python-提取地形起伏度最佳分析窗口
    地形起伏度是指在一定区域范围内的最大高程与最小高程之差.反映在DEM上,就是指分析区域内,栅格最大值与最小值的差异,表示分析区域的高程起伏情况.地形起伏度的计算公......
  • 前缀树(Tire)—Python
    核心思想空间换时间,是一种用于快速减速的多叉树结构,利用字符串的公共前缀来降低时间优缺点:优点:查询效率高,减少字符比较缺点:内存消耗较大每次都会从头向下一直到字符串......