免费代理ip爬虫分享
分享一个某代理网站的免费代理ip的爬虫,直接复制到pycharm运行就可以了。
注意:爬取的代理ip有点坑,因为是免费的所以过期时间很快,可能1分钟后就会失效。并且在scrapy使用这些代理ip还会给你打印一堆广告。且用且珍惜。
import requests
from lxml import etree
import json class XiciProxiesSpider(object): def __init__(self):
self.start_url = 'http://www.xicidaili.com/nn'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'
} def get_page_from_url(self, url):
response = requests.get(url,headers=self.headers)
return response.content.decode() def get_data_from_page(self, page):
# print(page)
# 把page转换为Element对象
html = etree.HTML(page)
# 获取包含代理信息的tr列表
trs = html.xpath('//*[@id="ip_list"]/tr')[1:] # 遍历trs, 获取数据信息 data = {
'http':[],
'https':[]
} for tr in trs:
try:
ip = tr.xpath('./td[2]/text()')[0]
port = tr.xpath('./td[3]/text()')[0]
ip_type = tr.xpath('./td[6]/text()')[0].lower()
# 如果ip不是http或https直接返回
if ip_type not in data.keys():
return
# 构建代理数据
item = {ip_type: '{}://{}:{}'.format(ip_type, ip, port)}
# 检查代理IP是否可用, 如果可用添加到列表中
if self.validate_ip(item, ip_type):
print(item[ip_type])
data[ip_type].append(item[ip_type])
except Exception as ex:
print(ex)
print(etree.tostring(tr)) # print(data)
return data def validate_ip(self, item, ip_type): try:
test_url = "{}://baidu.com".format(ip_type)
response = requests.get('http://baidu.com', proxies=item, timeout=2)
if response.status_code == 200:
return True
return False
except Exception as ex:
return False def save_data(self, data):
with open('proxies.json', 'w') as f:
json.dump(data, f, indent=2) def run(self):
# 获取页面内宽容
page = self.get_page_from_url(self.start_url)
# 获取可用代理IP
data = self.get_data_from_page(page)
# 保存数据
self.save_data(data) if __name__ == '__main__':
fps = XiciProxiesSpider()
fps.run()
免费代理ip爬虫分享的更多相关文章
- Python3.x:免费代理ip的批量获取并入库
Python3.x:免费代理ip的批量获取并入库 一.简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一 ...
- golang爬取免费代理IP
golang爬取免费的代理IP,并验证代理IP是否可用 这里选择爬取西刺的免费代理Ip,并且只爬取了一页,爬取的时候不设置useAgent西刺不会给你数据,西刺也做反爬虫处理了,所以小心你的IP被封掉 ...
- fastapi+vue搭建免费代理IP网站部署至heroku
说明 最近需要用到一些HTTP的代理,用于爬虫去爬取信息,搜索了一些网站,貌似现在这类提供免费代理IP的网站很多,刚好最近看了点vue的视频,弄个网站练练. 部署到heroku,预览地址:点击这里 F ...
- 码农代理免费代理ip端口字段js加密破解
起因 之前挖过爬取免费代理ip的坑,一个比较帅的同事热心发我有免费代理ip的网站,遂研究了下:https://proxy.coderbusy.com/. 解密 因为之前爬过类似的网站有了些经验,大概知 ...
- 常见的User-Agent及免费代理IP网站
常见的User-Agent 1.Android Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 ...
- 免费代理IP地址列表
代理地址最后验证日期:2017-8-28 纯真 66免费代理网 #推荐 西刺免费代理IP 酷伯伯HTTP代理 快代理 proxy360.cn 站大爷 Free Proxy List 年少#不稳定 全网 ...
- 采集15个代理IP网站,打造免费代理IP池
采集的站点: 免费代理IP http://ip.yqie.com/ipproxy.htm66免费代理网 http://www.66ip.cn/89免费代理 http://www.89ip.cn/无忧代 ...
- C#多线程爬虫抓取免费代理IP
这里用到一个HTML解析辅助类:HtmlAgilityPack,如果没有网上找一个增加到库里,这个插件有很多版本,如果你开发环境是使用VS2005就2.0的类库,VS2010就使用4.0,以此类推.. ...
- 简单爬虫-爬取免费代理ip
环境:python3.6 主要用到模块:requests,PyQuery 代码比较简单,不做过多解释了 #!usr/bin/python # -*- coding: utf-8 -*- import ...
随机推荐
- docker-images(镜像)
一.获取镜像 docker search NAME 搜索引擎查找镜像 docker pull NAME:<TAG> 拉去镜像 NAME:表示镜像名称/镜像仓库的名称 TAG: 表示镜像的 ...
- rabbitmq 3.7.8基于centos7部署文档
rabbitmq 3.7.8部署文档 安装erlang 安装依赖环境 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel ope ...
- 【Alpha】Scrum Meeting 7
目录 前言 任务分配 燃尽图 会议照片 签入记录 困难 前言 第7次会议在4月11日19:00由PM在教一317召开. 交流确认了任务进度,对下一阶段任务进行分配.时长60min. 任务分配 姓名 当 ...
- windows修改注册表添加开启自启动
快捷键win+R regedit 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 新建字符串值 C:\soft ...
- Java的实例化
实例化是什么 1.在Java中,使用已经定义好的类,创建该类对象的过程称为"实例化". 2.实例化就是在堆中分配内存的过程,分配的内存即对象. 3.只有实例化后的对象,才能访问到类 ...
- 剑指offer 06:旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...
- jenkins忘记admin密码解决办法
参考网址:https://www.jianshu.com/p/2995ae8157e7
- 浮点型/小数/栅格图层转为整数型arcgis操作
有时候会遇到将32位栅格数据提取属性表的操作,但是一般此类数据都是浮点型,是无法计算得到属性表的.因此我们可以利用数据管理工具下的: 复制栅格工具,在最下面选择16位即可,看自己数据情况选择signe ...
- .net扩展方法
http://www.cnblogs.com/landeanfen/p/4632467.html 看了博客才知道定义一个Util工具类并且在工具类里面写静态扩展方法并不是最好的选择.
- Linux系统时间, 硬件BIOS时间的校准与同步
#宿主机系统时间: date #宿主机时间校准方法: yum install -y ntpdate ntpdate -u ntp.api.bz #centos查看设置系统时区:(可能没有) cat / ...