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爬虫学习笔记 -- 批量获取免费代理的主要内容,如果未能解决你的问题,请参考以下文章