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

1.测试输出

2.文件输出

代码:
import requests
import traceback
import re
import random
import timeip_list=[]         #获取的ip列表
def main(num):     #主函数,设置爬取的页码范围for i in range(num):print("-----"+str(i+1)+"-----")url ='https://www.xicidaili.com/nn/'+str(i+1)get_ip(url)print('爬虫休息1s中...')time.sleep(1)#等待1秒print('程序运行结束!(按任意键退出)')input()#不同类型的操作系统以及浏览器的标识
user_agent_list=['Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0)','Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)','Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)','Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11','Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36',  'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0']
#请求是从哪个链接而来的
referer_list=['https://www.sogou.com/','http://blog.csdn.net/','https://www.baidu.com/',]
#ip存放地址
ip_use=[                       '117.88.176.153:3000',]
#获取html文本内容
def get_html(url,ip):try:header={'User-Agent':random.choice(user_agent_list), 'Referer':random.choice(referer_list)}ip=random.choice(ip)proxy_ip = 'http://' + ipproxy_ips = 'https://' + ipproxy = {'https': proxy_ips, 'http': proxy_ip}html=requests.get(url, headers=header, timeout=(3,7))html=html.text#print(html)return htmlexcept:print('获取ip错误!')#traceback.print_exc()   #打印异常#通过正则表达式,获取爬取的ip
def get_ip(url):try:html=get_html(url,ip_use)pattrens = r'alt="Cn" /></td>[\s]*?<td>([\d\D]*?)</td>[\s]*?<td>([\d\D]*?)</td>'root = re.findall(pattrens ,html)#print(len(root))   #当返回值为503的时候,root 的长度为0,可能是代理ip出现了问题,更换ip即可.for i in range(len(root)):#print(i)if(root[i][1]!='9999'and text_ip(root[i][0]+':'+root[i][1])):print(root[i][0]+':'+root[i][1])ip_list.append(root[i][0]+':'+root[i][1])write_text(root[i][0]+':'+root[i][1]+'\n')except:print('正则匹配错误!')#traceback.print_exc()   #打印异常#测试可用IP
def text_ip(ip):try:url="https://www.baidu.com/"header={'User-Agent':random.choice(user_agent_list), 'Referer':random.choice(referer_list)}proxy_ip = 'http://' + ipproxy_ips = 'https://' + ipproxy = {'https': proxy_ips, 'http': proxy_ip}html=requests.get(url, headers=header, proxies=proxy, timeout=(3,7))#print(html.status_code)if(html.status_code==200):return 1else:return 0except:#print('测试IP错误!')return 0
def write_text(ip):file = open("Data.txt",'a') #打开文件,并在文件尾添加内容file.write(ip)              #写入文件file.flush()                #刷新缓冲区 file.close()                #关闭文件if __name__ == '__main__':main(20)#爬取页数

Python 爬取西刺可用代理IP,自带检测。相关推荐

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

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

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

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

  3. 爬取西刺网实现ip代理池

    使用ip代理服务器可以防止在爬虫时被封本机ip.国内免费的高匿代理可以选择西刺网 总体目标是写一个爬虫,将这些字段保存在数据库中,然后筛选速度快的作为代理服务器,实现ip代理池. 在这里使用reque ...

  4. python 爬取西刺ip代理池

    1. 如何在requests中设置ip代理 最直接的用法,在get中添加proxies设置ip代理 proxies = {'https': 'http://183.148.153.147:9999/' ...

  5. 手把手教你使用Python爬取西刺代理数据,不用担心我封IP了!

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  6. Python爬取西刺代理网页

    爬取西刺代理网页的信息,并保存到本地的TXT文本或者mysql数据库中 本文只做爬取网页的练习 代码如下: import requests from lxml import etree import ...

  7. Python爬取西刺国内高匿代理ip并验证

    1.抓取ip存入文件 首先,我们访问西刺首页 http://www.xicidaili.com/,并点击国内高匿代理,如下图: 按 F12 检查网页元素或者 ctrl+u查看网页源代码: 我们需要提取 ...

  8. 【Python爬虫建立IP池错误】爬取西刺网出现的各种问题

    本想爬取一个网站,但由于访问次数多了,遭服务器拒绝.后面就行通过建立一个IP池,当然就想爬取西刺网上的IP.所以就在网上copy了一份代码,但很不幸的是不管怎么弄都无法运行.所以我开始简化代码,从爬取 ...

  9. 爬取西刺网的免费IP

    在写爬虫时,经常需要切换IP,所以很有必要自已在数据维护库中维护一个IP池,这样,就可以在需用的时候随机切换IP,我的方法是爬取西刺网的免费IP,存入数据库中,然后在scrapy 工程中加入tools ...

最新文章

  1. Python 生成器总结
  2. vue 根据swagger 生成接口_采用vue编写的功能强大的swagger-ui页面
  3. AutopilotSim2驾驶模拟器使用
  4. idea类文件前面有个小叉号
  5. 再添近10个新冠知识图谱,OpenKG发布第二批开放数据集
  6. 华为手机信息不弹屏了为什么_华为手机验证码不弹出是怎么回事
  7. 【大学总结】迟到但未缺席的大学总结
  8. BDP数据可视化分析工具,TAGUL数据可视化分析工具
  9. css3彩色3D文字上下漂浮动画js特效
  10. rgba 转 rgb或者16进制的计算方法
  11. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析
  12. ubuntu虚拟机开机黑屏系列解决办法
  13. 2020年jQuery笔试题汇总整理
  14. 均方误差(mean-square error, MSE)
  15. 4G IoT设备开发,一板搞定
  16. 2020考研-王道数据结构-图-图的遍历
  17. PixiJS学习(6)文本
  18. gta5正版服务器在哪儿,gta5服务器在哪里 | 手游网游页游攻略大全
  19. Nginx实现网站发布
  20. 宝塔Linux面板使用一键迁移插件实现网站快速搬家图文教程

热门文章

  1. 封装格式分析-MP4
  2. 深圳达内培训python学费
  3. css实现线条两边细中间粗
  4. PCR实验室建设要求及防控建议
  5. kindle推送服务尝试
  6. linux 跑分教程视频教程,linux 基础性能测试方法及步骤(用不同的工具逐项测试)...
  7. 爱快软路由ADSL/PPPoE之“间隔时长重拨“参数设置不当导致远程ssh连接频繁断线
  8. Python做的眼睛护士
  9. Epson 打印机设置
  10. php echarts官网,Echarts用法详细介绍