python构造IP代{过}{滤}理池
这个是我在微信公众号看到类似案例,然后觉得蛮有用的。经常在爬虫的时候,因为IP访问频繁的原因导致爬取失败,所以根据这个思路写了IP代{过}{滤}理池。新人写的代码还有很大的改善空间,希望各位大哥给点评论。
import requests
from bs4 import BeautifulSoup
import time
proxies_list = []
def download(response):
global proxies_list
soup = BeautifulSoup(response.text, "html.parser")
# print("good")
data_list = soup.find(name="div", attrs={"id": "freelist", "class": "kf-table"})
data_list = data_list.find(name="tbody", attrs={"class": "center"})
data_list = data_list.find_all(name="tr")
# print(data_list)
for data in data_list:
ip = data.find(name="td", attrs={"data-title": "IP"}).text.strip()
port = data.find(name="td", attrs={"data-title": "PORT"}).text.strip()
http_type = data.find(name="td", attrs={"data-title": "类型"}).text.strip()
# print(ip, http_type, port)
ip_port = ip + ":" + port
proxies_dict = {http_type: ip_port}
proxies_list.append(proxies_dict)
def main():
for i in range(1, 4):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"
}
url = "https://www.kuaidaili.com/ops/proxylist/" + str(i)
try:
response = requests.get(url=url, timeout=30, headers=headers)
# print(response.text)
# break
if not response.raise_for_status():
download(response)
except:
continue
print(proxies_list)
return proxies_list
好像忘了写注释了{:1_924:} 刚开始学习,先能实现自己需要的功能就好,慢慢从其他人的代码吸收改进 刚开始学py ,还 看不懂, 先收藏了 支持下,多多分享,免费代{过}{滤}理能用的不多,都被用烂了 崔庆才有个代{过}{滤}理池的项目可以看看! 这只是收集了一批代{过}{滤}理地址,关键是如何自动切换代{过}{滤}理。我知道怎么用c#做,想看看python的写法 建议可以加入验证代{过}{滤}理的函数,可以用再返回,不然这样代{过}{滤}理很多会用不了,我自己也写了一个,你可以看一下,互相学习 hxl123 发表于 2020-8-23 03:28
建议可以加入验证代{过}{滤}理的函数,可以用再返回,不然这样代{过}{滤}理很多会用不了,我自己也写了一个 ...
其实没有验证也可以。在爬虫时同样可以检测。 hxl123 发表于 2020-8-23 03:28
建议可以加入验证代{过}{滤}理的函数,可以用再返回,不然这样代{过}{滤}理很多会用不了,我自己也写了一个 ...
可以分享一下链接吗?好像这里不能看到个人资料。没有办法直接点进去
页:
[1]
2