这类代码很多人都已经写过了。主要用于给另一篇博客参考。

这里笔者整合出一个类,方便使用。

import re
import random
import requests
from bs4 import BeautifulSoupclass IP():def __init__(self,headers="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"):self.mainURL = "http://www.xicidaili.com/"                         # 西刺代理首页self.nnURL = self.mainURL+"nn/"                                     # 国内高匿代理self.ntURL = self.mainURL+"nt/"                                     # 国内普通代理self.wnURL = self.mainURL+"wn/"                                     # 国内HTTPS代理self.wtURL = self.mainURL+"wt/"                                  # 国内HTTP代理self.ipRegulation = r"(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])"self.headers = {"User-Agent":headers}self.session = requests.Session()self.session.headers = headerswhile True:try:self.session.get(self.mainURL)breakexcept:print("访问西刺代理失败!")time.sleep(300)def get_nn_IP(self):                                              # 获取国内高匿代理address = []interface = []html = self.session.get(self.nnURL).textsoup = BeautifulSoup(html,"lxml")                                tds = soup.find_all("td")count = 0for td in tds:count += 1if count%10==2:address.append(str(td.string))elif count%10==3:interface.append(str(td.string))return ["{}:{}".format(address[i],interface[i]) for i in range(min(len(address),len(interface)))]def get_nt_IP(self):                                                # 获取国内普通代理address = []interface = []html = self.session.get(self.ntURL).textsoup = BeautifulSoup(html,"lxml")                            tds = soup.find_all("td")count = 0for td in tds:count += 1if count%10==2:address.append(str(td.string))elif count%10==3:interface.append(str(td.string))return ["{}:{}".format(address[i],interface[i]) for i in range(min(len(address),len(interface)))]def get_wn_IP(self):                                                # 获取国内HTTPS代理address = []interface = []html = self.session.get(self.wnURL).textsoup = BeautifulSoup(html,"lxml")                 tds = soup.find_all("td")count = 0for td in tds:count += 1if count%10==2:address.append(str(td.string))elif count%10==3:interface.append(str(td.string))return ["{}:{}".format(address[i],interface[i]) for i in range(min(len(address),len(interface)))]def get_wt_IP(self):                                                # 获取国内HTTP代理address = []interface = []html = self.session.get(self.wtURL).textprint(html)soup = BeautifulSoup(html,"lxml")                           tds = soup.find_all("td")count = 0for td in tds:count += 1if count%10==2:address.append(str(td.string))elif count%10==3:interface.append(str(td.string))return ["{}:{}".format(address[i],interface[i]) for i in range(min(len(address),len(interface)))]

分享学习,共同进步!

【自定义模块】从西刺免费代理获取IP列表相关推荐

  1. 爬取西刺网代理ip,并把其存放mysql数据库

    需求: 获取西刺网代理ip信息,包括ip地址.端口号.ip类型 西刺网:http://www.xicidaili.com/nn/ 那,如何解决这个问题? 分析页面结构和url设计得知: 数据都在本页面 ...

  2. Qt在linux和widows下获取IP列表,网关,子网掩码,广播地址

    Qt获取IP列表,网关,子网掩码,广播地址 linux下根据IP获取子网掩码还有网关 首先获取出IP列表,然后根据传入的IP地址进行判断,然后获取子网掩码和网关 #if defined(Q_OS_WI ...

  3. Python 爬取西刺可用代理IP,自带检测。

    功能: 爬取西刺代理IP 添加了自动检测IP是否可用功能 输出到Data.txt文件中 注意: 爬取西刺的时候,有可能真实IP被封,可以先尝试爬取少量的代理IP,放入ip_use中. 测试: 1.测试 ...

  4. 爬取西刺网代理IP并检验保存

    准备把以前写过的小爬虫慢慢贴出来,抱歉还没怎么去改~ 最后可用的IP保存在运行目录下的ip_ues.txt中. #encoding:utf8 #author : buracag_mc import u ...

  5. 36-Scrapy框架-西刺网代理爬取+存储到MySQL

    目的: 爬取西刺网https://www.xicidaili.com/nn下3799页的代理相关信息 将爬取的信息存储到mysql数据库 采用基于spider类的Scrapy框架爬虫,所以在构建爬取页 ...

  6. 抓取免费代理返回空列表?!

    PYTHON网络爬虫概述 之前按照一些帖子的步骤去爬取代理,返回一个空列表?!才隔一两个月啊,怎么会没用啊? 偶然间翻到一篇帖子,大致意思就是这些免费代理网站也设置了IP反爬虫!!!这么坑?giao! ...

  7. 代理的基本原理 及用Xpath爬取代理网站IP列表 测试并存入数据库

    前言 在网络爬虫中,有些网站会设置反爬虫措施,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,例如 403 Forbidden,"您的IP ...

  8. 爬虫获取西刺免费高匿代理

    #有些代理不能使用,使用前先写脚本筛选 import requests from lxml import etree import xlwt import time ip = xlwt.Workboo ...

  9. 西刺网代理IP存进数据库

    python|scrapy|mysql|navicat 编程是个无底洞,之前的爬虫没有使用框架,为了进阶,做了两个事情:一,使用爬虫框架scrapy;二,安装数据库mysql,学习简单的sql语言,安 ...

  10. socket编程之gethostbyname获取IP列表和Host别名列表

    gethostbyname 函数原型: struct hostent FAR * WSAAPI gethostbyname( _In_z_ const char FAR * name ); getho ...

最新文章

  1. 孤荷凌寒自学python第三十八天初识python的线程控制
  2. 从命令式到响应式(四)
  3. ajax java 插件_对JQuery中Ajax应用与jQuery插件的理解与笔记
  4. ajax传递数组后台接收不到值的问题
  5. oracle 磁盘挂载格式化,Linux简单磁盘挂载
  6. 基于MaxCompute 衣二三帮助客户找到合适自己的衣服
  7. 蓝桥杯之--神秘三位数
  8. 机器学习1---基本概念
  9. javaeye怎么打不开了?当前!2010,10,24,23:08
  10. 基于遗传算法优化极限学习机预测及其MATLAB实现-附代码
  11. 关于同时安装Keil4MDK与C51问题
  12. 如何制作音乐界面动效设计
  13. 蜗牛星际b款装服务器系统,星际蜗牛 篇八:蜗牛星际B款改装美化 —— 拆!拆!拆!...
  14. 【2019.05.23】JS逆向——破解裁判文书网参数(vl5x,guid )爬虫 超级详细
  15. 室内全景图数据集的设计及制作流程
  16. ThinkPad E420升级之路
  17. 服务器的丢包率一般与什么有关
  18. 【解析】心田上的百合花开——心田花开
  19. 重装系统:利用微PE制作U盘为启动盘,重装win7旗舰版(win10等也一样)
  20. 计算机考研11408总分418上岸攻略

热门文章

  1. Bing翻译和Google翻译的比较
  2. JavaScript、canvas小球加速和减速运动
  3. DNF服务器搭建服务端架设教程
  4. python画五子棋棋盘_python 五子棋-文字版(上)
  5. 回顾jvisualvm安装插件简单操作
  6. android开发下载文件损坏解决方法,Android中已下载的.apk文件已损坏
  7. python二维码批量拼接,多张高清二维码批量拼接
  8. 网络爬虫+数据可视化
  9. Modbus通讯模拟环境的搭建(一) —— Modscan与Modsim的应用
  10. c++ mysql中文乱码_c++ poco 使用mysql中文乱码问题