2023爬虫学习笔记 -- 批量获取免费代理

Posted web安全工具库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023爬虫学习笔记 -- 批量获取免费代理相关的知识,希望对你有一定的参考价值。

一、目标网址

https://www.XXXX.com/free

二、分析源码,我们要获取的是IP,PORT,位置

三、获取网页源码

目标地址="https://www.XXXX.com/free"
头=
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/86.0.4240.198 Safari/537.36"

响应=requests.get(url=目标地址,headers=头)
响应.encoding="UTF-8"
#print(响应.text)
响应内容=响应.text

四、通过bs4获取关键数据

1、右击复制selector内容

#list > table > tbody > tr:nth-child(2) > td:nth-child(1)

2、适当修改,获取tr块里面的所有数据

sp=bs4.BeautifulSoup(响应内容,'lxml')
标题列表=sp.select('#list > table > tbody > tr')
print(标题列表)

3、通过findAll读取属性值

for a in 标题列表:
    IP=a.findAll("td")[0]
    PORT = a.findAll("td")[1]
    位置 = a.findAll("td")[4]
    print(IP.text,PORT.text,位置.text)

121.13.252.62 41564 广东省东莞市  电信
112.14.47.6 52024 浙江省宁波市  移动
117.114.149.66 55443 北京市海淀区 BJENET宽带网络 BGP多线
222.74.73.202 42055 内蒙古自治区赤峰市  电信
202.109.157.66 9000 江西省赣州市  电信
116.9.163.205 58080 广西壮族自治区钦州市  电信
27.42.168.46 55481 中国 广东 中山 联通
121.13.252.61 41564 广东省东莞市  电信
61.216.185.88 60808 中国 台湾 屏东县
61.216.156.222 60808 中国 台湾 cht.com.tw
121.13.252.58 41564 广东省东莞市  电信
202.109.157.65 9000 江西省赣州市  电信
121.13.252.60 41564 广东省东莞市  电信
210.5.10.87 53281 中国 上海  联通
117.94.116.240 9000 中国 江苏 泰州 电信

4、将内容写入到文件

fp=open("dl.txt","w",encoding="utf8")
for a in 标题列表:
    IP=a.findAll("td")[0]
    PORT = a.findAll("td")[1]
    位置 = a.findAll("td")[4]
    fp.write(IP.text+":"+PORT.text+"\\t"+位置.text+"\\n")
fp.close()

五、获取多页代理数据

1、获取第2页和第3页数据,发现网址只是在后面加上了2和3

https://www.XXXX.com/free/inha/2/
https://www.XXXXX.com/free/inha/3/

2、构造动态的目标地址

https://www.XXXXX.com/free/inha/%d/
目标地址=format(动态目标地址%pg)

3、完整源码

import time
import bs4
import requests
动态目标地址="https://www.XXXXX.com/free/inha/%d/"
头=
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"

fp = open("dl.txt", "w", encoding="utf8")
for pg in range(1,5):
    目标地址=format(动态目标地址%pg)
    响应=requests.get(url=目标地址,headers=头)
    time.sleep(2)
    响应.encoding="UTF-8"
    #print(响应.text)
    响应内容=响应.text
    sp=bs4.BeautifulSoup(响应内容,'lxml')
    标题列表=sp.select('#list > table > tbody > tr')
    #list > table > tbody > tr:nth-child(2) > td:nth-child(1)
    #print(标题列表)
    for a in 标题列表:
        IP=a.findAll("td")[0]
        PORT = a.findAll("td")[1]
        位置 = a.findAll("td")[4]
        fp.write(IP.text+":"+PORT.text+"\\t"+位置.text+"\\n")
fp.close()

以上是关于2023爬虫学习笔记 -- 批量获取免费代理的主要内容,如果未能解决你的问题,请参考以下文章

2023爬虫学习笔记 -- 使用代理爬取数据

2023爬虫学习笔记 -- 某狗网站爬取数据

神箭手爬虫学习笔记

2023爬虫学习笔记 -- 多线程操作

Python获取免费的可用代理

2023爬虫学习笔记 -- 解决爬虫Cookies问题