利用python爬虫(案例5)--X刺代理的小IP们
学习笔记
爬取X刺代理的小IP们
学完代理,我们发现网上找的很多免费代理IP都用不了,所以这里写一个简单的测试小案例,爬取一下某代理IP网站的免费代理IP,再遍历测试到底这些代理IP能不能用,哪些能用。
爬取步骤
获取要爬取的代理IP网站地址(http://www.xicidaili.com/nn/)
爬取页面内所有的代理IP及其端口号
测试代理IP
将可以用的代理IP存在一个csv文件里。
因为这个案例不是很复杂,所以我们就不写怎么查看网页源代码,怎么写Xpath,怎么研究URL特征这些步骤了,直接上代码
python代码
为了节省时间,我只测试了19个代理IP:
# -*- coding: utf-8 -*-import requests
from lxml import etree
from fake_useragent import UserAgent
import time
import csvclass IpSpider:def __init__(self):self.url = 'http://www.xicidaili.com/nn/'def get_ua(self):return UserAgent().randomdef get_page(self):headers = {'User-Agent':self.get_ua()}res = requests.get(self.url, headers = headers)html = res.content.decode('utf-8')print('url:', res.url)print('code:', res.status_code)#print(html)self.get_ip_list(html)def get_ip_list(self, html):html_parse = etree.HTML(html)xpath = '//table[@id="ip_list"]//tr'r_list = html_parse.xpath(xpath)#print(r_list)proxy_list = []for p in r_list[1:20]:my_ip = p.xpath('./td[2]/text()')[0]my_port = p.xpath('./td[3]/text()')[0]#print('代理IP:', my_ip)proxy_list.append({'http':'http://{}:{}'.format(my_ip, my_port), 'https':'https://{}:{}'.format(my_ip, my_port)})self.test_ip(proxy_list)def test_ip(self, proxy_list):useful_proxy = []for proxy in proxy_list:print(proxy)headers = {'User-Agent':self.get_ua()}try:res = requests.get(self.url, headers = headers,proxies = proxy,timeout = 4)#如果请求超过3秒没有相应则默认该代理不能用except Exception as e:print('此代理IP无法使用......')else:useful_proxy.append(proxy)print(proxy)self.write_ip(useful_proxy)def write_ip(self, proxy_list):with open('./test/my_test_proxy.csv', 'w', newline = '') as f:writer = csv.writer(f)writer.writerow(['http', 'https'])for item in proxy_list:writer.writerow([item['http'], item['https']])def main(self):self.get_page()if __name__ == '__main__':start = time.time()spider = IpSpider()spider.main()end = time.time()print('执行时间:%.2f' % (end-start))
部分结果:
此代理IP无法使用......
{'http': 'http://111.231.239.143:1081', 'https': 'https://111.231.239.143:1081'}
此代理IP无法使用......
{'http': 'http://115.223.64.38:8010', 'https': 'https://115.223.64.38:8010'}
此代理IP无法使用......
执行时间:70.16
可用的代理IP
我们打开存放可用代理IP的csv文件,看一下有哪些IP:
http,https
http://125.126.117.30:60004,https://125.126.117.30:60004
http://125.126.113.184:60004,https://125.126.113.184:60004
http://112.16.217.191:808,https://112.16.217.191:808
好了,这个小案例完结…
利用python爬虫(案例5)--X刺代理的小IP们相关推荐
- 利用python爬虫(案例7)--X讯招聘的小职位们
学习笔记 爬取X讯招聘的小职位们 写个小案例,我们想爬取X讯招聘网站里处于1级页面的职位名称和处于2级页面的工作职责和工作要求.由于这个X讯招聘网站是动态加载的,所以需要抓取我们与网站进行交互时产生的 ...
- 利用python爬虫(案例2)--X凰的一天
学习笔记 PS:为啥这个BLOG是案例2,但是我的BLOG里没有案例1,那是因为BLOG1被锁了.心痛. 爬取新闻标题和链接 我想通过Xpath拿到X凰X闻[http://news.ifeng.com ...
- 利用pyhton爬虫(案例3)--X房网的小房子们
写了个小案例,顺便复习一下以前学的知识点. PS:复试之前绝不写爬虫案例了(对于现在的我来说,费脑又花时间),再写我吃XX. 文章目录 爬取X房网二手房信息 爬取步骤 URL特征 查看HTML页面源代 ...
- 利用python爬虫(案例8)--今天就是吃X我也要搞到有道
学习笔记 备注:这个Blog也是part14 爬取有道 写个案例,我想要破解有道翻译(http://fanyi.youdao.com/)接口,抓取翻译结果. 一开始,我还以为写这个不是很麻烦,因为2年 ...
- 利用python爬虫(案例6+part14)--如何爬取科研数据
学习笔记 文章目录 Ajax动态加载网站数据抓取 动态加载的类型 那么该如何抓取数据? 如何得到JSON文件的地址? 观察JSON文件URL地址的查询参数 JSON格式数据转换成python字典 如何 ...
- 利用pyhton爬虫(案例4)--你想要的图片都在这
学习笔记 爬取X度某吧里的小图片们 写个小案例,获取X度里,你指定的吧里,第kkk页之前所有帖子内的图片,当然这个kkk由你定. 爬取步骤 ①获取用户指定吧名和指定页数,得到贴吧主页URL. ②获取1 ...
- python爬虫怎么赚钱-个人利用Python爬虫技术怎么挣钱-10万被动收入...
我利用Python爬虫技术年挣10万被动收入的方式,在正式聊Python爬虫技术之前,先来说说挣钱的事,说说作为一个自由职业或兼职者怎么利用爬虫来挣钱. 个人爬虫挣钱方法大致如下 爬虫技术挣钱方法1: ...
- Python 爬虫案例(二)--附件下载
Python 爬虫案例(二) 此篇文章将爬取的网站是:http://www.warrensburg-mo.com/Bids.aspx (有时候打开不一定会有标书,因为标书实时更新) 类型跟上一篇相似, ...
- 利用python爬虫与数据分析,打造最强玩法,轻松成为大神级玩家!
前言: 最近迷上了一款游戏,但是作为一名程序员的我是不可能只玩游戏的,我必须把它的官网数据采集下来! 环境: windows python3.6.5 模块: requests jsonpath pyg ...
最新文章
- 神奇的魔法数字0x61c88647
- img边框的border属性
- java游戏_java开发的七个金典游戏你小时候肯定玩过
- visual studio 2005占用cpu100% -_-...
- Linux ifconfig指令
- 【codevs1052】地鼠游戏,标签不都是对的
- python优点是代码库支持、灵活_C++和Python混合编程的利器
- android select下拉列表_Python+selenium自动化之下拉列表操作(一)
- android 多线程编程
- Windows10的启动项管理
- 读书笔记(英文) The Ngihtingale and Rose
- OpenSSL Cipher 加密解密 Ruby on Rails
- 【非常简单bug管理工具-TAPD 】
- word办公插件中的佼佼者,Word魔方
- PyCharm添加Anaconda中的虚拟环境,Python解释器出现Conda executable is not found(解决方案)
- AMD EPYC CPU物理机之core(云主机最大可使用内核数)售卖机制 ---- NUMA and NPS使用
- java web JSP实用教程第二章
- Python 中 list 和 deque 性能对比
- 通过游戏策划阶段防治游戏外挂
- 虚幻引擎C++开发学习(二)上
热门文章
- LibSVM使用记录 C++ Visual studio
- Hadoop, Hbase
- php 地图 距离,PHP计算百度地图两个GPS坐标之间距离的方法
- 移动端cube界面设计html,滴滴 Web 移动端组件库 cube-ui 开源
- 在JAVA语言程序中main_在Java程序main方法中,正确的参数是
- Oracle 中 call 和 exec的区别
- [学习笔记]后缀自动机
- C# Note32: 查漏补缺
- 【Android开发】线程与消息处理-Handler消息传递机制之Looper
- java synchronized wait