@[TOC]使用python多线程获取代理IP(代理IP池,附源码)

代理IP池

都说现在是大数据的时代,大多数的厂商会特别的注重自己家的数据安全问题,但同时,也有着许多的行业是需要大数据来做支撑的,所以爬虫对于个别厂商而言就是一个极为有利的工具,但是对于数据方来说,是十分讨厌爬虫的,因为许多的爬虫工作者会无节制的爬虫公司数据,对于公司的服务器以及服务造成不小的负担,因此各大厂商也做了必要的爬虫限制,其中,封禁IP就是一个。

ip被封会有什么问题?

在爬虫的过程中,如果无节制的请求服务器数据,则有可能会被限制爬取该网站的数据,一些小公司可能会限制你几分钟,几小时,而大厂有可能是直接让你的IP进入小黑屋,以后都无法在爬取任何数据。

解决办法

有小伙伴问了,既然有反爬虫,那是不是也有反反爬虫呢?答案是肯定的!其中最为常用的一种即为“代理IP”,但是现在的代理IP都是需要收费的,甚至是需要用户做实名认证才可以使用,此处,有钱的大哥请略过!

下面为各位爬友提供一个免费的代理IP池,有需要源码的下面提取!

注释:该源码的功能是爬取指定的四个免费代理IP网站并验证是否可用,当需要使用的时候从数据库中调取一个代理ip。

源码!

-- coding: UTF-8 --

import time

import requests
from bs4 import BeautifulSoup
import telnetlib
from pymssql import _mssql
from pymssql import _pymssql
import uuid
import decimal
import threading

class proxies():
_pymssql.Connection
def init(self, ip, port):
self.ip = ip
self.port = port

def ADONet(sql):
try:
conn =_pymssql.connect(host=‘服务器地址’, port=‘端口’, user=‘数据库账号’, password=‘数据库密码’, database=‘数据库名称’)
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
conn.close()
cursor.close()
return 1
except:
return 0

def GetPortAndIP(ip, port):
try:
sql = ‘select count(0) from [JKXT].[dbo].[ProxyPool] where [IP]=’{0}’ and [Port]=’{1}’’.format(ip, port)
conn = _pymssql.connect(host=‘服务器地址’, port=‘端口’, user=‘数据库账号’, password=‘数据库密码’, database=‘数据库名称’)
cursor = conn.cursor()
a = cursor.execute(sql)
conn.close()
cursor.close()
if a == None:
return False
else:
return True
except:
return True

def CheckPort(ip, port):
try:
session = telnetlib.Telnet(ip, port, timeout=3)
if session:
return True
except:
return False

def Getkxdaili():
while True:
global sql
try:
baseurl = ‘http://www.kxdaili.com/dailiip/1/’
for i in range(1, 11):
header = {‘User_Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36’,
‘Cookie’:‘Hm_lvt_9bfa8deaeafc6083c5e4683d7892f23d=1627031365,1627349639; Hm_lvt_31dfac66a938040b9bf68ee2294f9fa9=1627350430; Hm_lpvt_31dfac66a938040b9bf68ee2294f9fa9=1627350446; csrftoken=1ubP9GR74ZPdAydjuiz9whXFKrAAJ3Is7mFDhcNQyV4x5ltmy1Qksl16soOyLDQ4; sessionid=izogepo2gjc3mrnimg23ykras9d3phnp; Hm_lpvt_9bfa8deaeafc6083c5e4683d7892f23d=1627354708’
}
url = baseurl + str(i)+’.html’
resp = requests.get(url, headers=header)
bs = BeautifulSoup(resp.content.decode(‘utf-8’), ‘html.parser’)
datahtml = bs.select(‘div.hot-product-content>table>tbody>tr’)
for item in datahtml:
aa = CheckPort(item.select(‘td’)[0].text, item.select(‘td’)[1].text)
if aa:
result = GetPortAndIP(item.select(‘td’)[0].text, item.select(‘td’)[1].text)
if not result:
sql = “INSERT INTO [JKXT].[dbo].[ProxyPool]([IP] ,[Port],[Status])values(’{0}’,’{1}’,’{2}’)”.
format(item.select(‘td’)[0].text, item.select(‘td’)[1].text, 0).replace(’\’, ‘’)
a= ADONet(sql)
print(‘开心代理IP:{0}:{1}可用’.format(item.select(‘td’)[0].text, item.select(‘td’)[1].text))
else:
return
except:
return ‘’

def GetKuaiDaili():
while True:
url = ‘https://www.kuaidaili.com/free/inha/’
header =
{
‘User_Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36’,
}
for i in range(1, 10):
url = url + str(i)
resp = requests.get(url, headers=header)
html = resp.content.decode(‘utf-8’)
datahtml = BeautifulSoup(html, ‘html.parser’)
result = datahtml.select(‘div#list>table>tbody>tr’)
for item in result:
aa = CheckPort(item.select(‘td’)[0].text, item.select(‘td’)[1].text)
if aa:
result = GetPortAndIP(item.select(‘td’)[0].text, item.select(‘td’)[1].text)
if not result:
sql = “INSERT INTO [JKXT].[dbo].[ProxyPool]([IP] ,[Port],[Status])values(’{0}’,’{1}’,’{2}’)”.
format(item.select(‘td’)[0].text, item.select(‘td’)[1].text, 0).replace(’\’, ‘’)
ak = ADONet(sql)
if ak == 1:
print(‘快代理IP:{0}:{1}可用’.format(item.select(‘td’)[0].text, item.select(‘td’)[1].text))
else:
return
break

def GetMFDaili():
while True:
url = ‘http://ip.yqie.com/ipproxy.htm’
header =
{
‘User_Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36’,
}
resp = requests.get(url, headers=header)
html = BeautifulSoup(resp.content.decode(‘utf-8’), ‘html.parser’)
data = html.select(‘div>table#GridViewOrder>tr’)
x = data[1:17]
for item in x:
aa = CheckPort(item.select(‘td’)[0].text, item.select(‘td’)[1].text)
if aa:
result = GetPortAndIP(item.select(‘td’)[0].text, item.select(‘td’)[1].text)
if not result:
sql = “INSERT INTO [JKXT].[dbo].[ProxyPool]([IP] ,[Port],[Status])values(’{0}’,’{1}’,’{2}’)”.
format(item.select(‘td’)[0].text, item.select(‘td’)[1].text, 0).replace(’\’, ‘’)
ak = ADONet(sql)
if ak == 1:
print(‘免费代理IP:{0}:{1}可用’.format(item.select(‘td’)[0].text, item.select(‘td’)[1].text))
else:
return

def Getnimadaili():
while True:
url = ‘http://www.nimadaili.com/gaoni/’
header =
{
‘User_Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36’,
}
for i in range(1, 10):
url = url + str(i)
resp = requests.get(url, headers=header)
html = BeautifulSoup(resp.content.decode(‘utf-8’), ‘html.parser’)
result = html.select(‘body > div > div:nth-child(2) > div > table > tbody > tr’)
for item in result:
port = item.select(‘td’)[0].text.split(’:’)[1]
IP = item.select(‘td’)[0].text.split(’:’)[0]
aa = CheckPort(IP, port)
if aa:
result = GetPortAndIP(IP, port)
if not result:
sql = “INSERT INTO [JKXT].[dbo].[ProxyPool]([IP] ,[Port],[Status])values(’{0}’,’{1}’,’{2}’)”.
format(IP, port, 0).replace(’\’, ‘’)
ak = ADONet(sql)
if ak == 1:
print(‘尼玛代理IP:{0}:{1}可用’.format(IP, port))
else:
return

def kkk():
print(‘000123’)

if name == “main”:
try:
time1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
t1 = threading.Thread(target=Getkxdaili)
t2 = threading.Thread(target=Getnimadaili)
t3 = threading.Thread(target=GetMFDaili)
t4 = threading.Thread(target=GetKuaiDaili)
t1.start()
t2.start()
t3.start()
t4.start()
except Exception as e:
print (e)

使用python多线程获取代理IP(代理IP池,附源码)相关推荐

  1. python程序员专用壁纸_程序员炫技必备:用Python生成马赛克画!(文末附源码)...

    原标题:程序员炫技必备:用Python生成马赛克画!(文末附源码) 源 | Python与数据分析文 | 强哥 大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本 ...

  2. python撩人的代码,老师教已毕业的学生,用Python代码每天不定时撩女友,附源码文件...

    原本就是学生会主席,在学校如此优秀的他,毕业参加工作,依然展现出好强的一面. 每天认真的工作,即使在工作之余也要用来给自己充电,所以难免会忽略女友,不够关心,免不了发脾气,甚至是争吵. 有一天,曾经大 ...

  3. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计

    Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...

  4. Python开发实战案例之网络爬虫(附源码)-张子良-专题视频课程

    Python开发实战案例之网络爬虫(附源码)-35人已学习 课程介绍         课程特色: 特色1:案例驱动-围绕两大完整的Python网络爬虫实战开发案例:IT电子书下载网络爬虫和股票交易数据 ...

  5. android flv 编码器,Android 音视频深入 十七 FFmpeg 获取 RTMP 流保存为 flv (附源码下载)...

    Android 音视频深入 十七 FFmpeg 获取 RTMP 流保存为 flv (附源码下载) 项目地址 https://github.com/979451341/RtmpSave 这个项目主要代码 ...

  6. 微信小程序UI自动化实践:python+minium+PO模式(超详细教程附源码供下载)

    文章目录 前言 一.minium介绍 二.安装环境 1. 安装minium doc 2. 安装minium 3. 启动小程序 三.准备知识 1. 启动 2. 配置 3. 命令行运行 4. 元素定位 5 ...

  7. Python爬取高清桌面壁纸(附源码),直接运行即可

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于云+社区,作者 深雾 转载地址 https://blog.c ...

  8. 20行Python代码实现图形化翻译工具(附源码和成品下载地址)

    文章目录 一.实现效果 二.实现思路 三.核心源码 四.源码和成品分享 五.总结 一.实现效果 话不多说,直接上演示效果: 1.中文转英文 <<点我获取[源码]和[可直接运行]的文件< ...

  9. python爬百度翻译-爬虫 python爬取百度翻译接口 超详细附源码

    前言 今天教大家如何利用 firefox 分析百度翻译的接口,并用python爬取接口.大家学会后可以干一些有趣的事情,比如做一个自己的翻译软件. 具体内容 1 - 找到URL接口 进入百度翻译的网址 ...

  10. python代码解读器_python文章生成器(附源码+讲解)

    移动端建议收藏后在pc端查看 最近在看到网上的[营销号生成器]和[狗屁不通生成器].前者确实是营销号的口吻,但是竟然连模板都是写死的:后者也如其名,的确"狗屁不通".于是结合当前对 ...

最新文章

  1. 融合视频目标检测与单目标、多目标跟踪,港中文开源一体化视频感知平台 MMTracking...
  2. jQuery ajax请求成功且返回了数据,但是不进success:function()
  3. Windows Mobile Crossbow详尽评测
  4. 2018icpc南京网络赛L题Magical Girl Haz(dijkstra+dp)
  5. JS String类型整理
  6. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】HAWQ数据仓库 使用之 gpfdist协议
  7. 阿里内核月报2014年4月
  8. 【Python学习系列十四】IPython命令行式交互界面工具Jupyter
  9. sockaddr_in 结构体
  10. java生成密码_java生成密码生成 | 学步园
  11. mysql string types ---- mysql 字符类型详解
  12. python代码编码成jni_python 设置文件编码格式的实现方法
  13. Java自动装箱和拆箱
  14. pythonjson中list操作_python中JSON的使用
  15. 交叉编译JRTPLib库
  16. 淘系双十一全链路压测流程概览
  17. 聊聊世界编程语言排行榜的事
  18. FxFactory 7 Mac版(Mac视觉特效插件包)
  19. Java怎么除以2_哪个更好的选项用于将整数除以2?
  20. 中望CAD的lisp编辑器_中望CAD 2020中文版

热门文章

  1. flutter踩坑高德地图amap_base
  2. SPD到底能为大家带来什么?(一) 缘起-曲折-三方-四方
  3. ZIP压缩包的自动设置密码可以这样解除
  4. Http1.0协议常识
  5. 记录一次Thymeleaf th:inline内联问题
  6. Step1帐户登录系统
  7. 便携式五参数水质检测仪通过通过校准计量了
  8. 分享一个有趣的小抄表——机器学习关键概念
  9. 如何去去数组的并集和交集?
  10. Oracle DB 深入理解 OUI(Oracle Universal Installer)