学习笔记


爬取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们相关推荐

  1. 利用python爬虫(案例7)--X讯招聘的小职位们

    学习笔记 爬取X讯招聘的小职位们 写个小案例,我们想爬取X讯招聘网站里处于1级页面的职位名称和处于2级页面的工作职责和工作要求.由于这个X讯招聘网站是动态加载的,所以需要抓取我们与网站进行交互时产生的 ...

  2. 利用python爬虫(案例2)--X凰的一天

    学习笔记 PS:为啥这个BLOG是案例2,但是我的BLOG里没有案例1,那是因为BLOG1被锁了.心痛. 爬取新闻标题和链接 我想通过Xpath拿到X凰X闻[http://news.ifeng.com ...

  3. 利用pyhton爬虫(案例3)--X房网的小房子们

    写了个小案例,顺便复习一下以前学的知识点. PS:复试之前绝不写爬虫案例了(对于现在的我来说,费脑又花时间),再写我吃XX. 文章目录 爬取X房网二手房信息 爬取步骤 URL特征 查看HTML页面源代 ...

  4. 利用python爬虫(案例8)--今天就是吃X我也要搞到有道

    学习笔记 备注:这个Blog也是part14 爬取有道 写个案例,我想要破解有道翻译(http://fanyi.youdao.com/)接口,抓取翻译结果. 一开始,我还以为写这个不是很麻烦,因为2年 ...

  5. 利用python爬虫(案例6+part14)--如何爬取科研数据

    学习笔记 文章目录 Ajax动态加载网站数据抓取 动态加载的类型 那么该如何抓取数据? 如何得到JSON文件的地址? 观察JSON文件URL地址的查询参数 JSON格式数据转换成python字典 如何 ...

  6. 利用pyhton爬虫(案例4)--你想要的图片都在这

    学习笔记 爬取X度某吧里的小图片们 写个小案例,获取X度里,你指定的吧里,第kkk页之前所有帖子内的图片,当然这个kkk由你定. 爬取步骤 ①获取用户指定吧名和指定页数,得到贴吧主页URL. ②获取1 ...

  7. python爬虫怎么赚钱-个人利用Python爬虫技术怎么挣钱-10万被动收入...

    我利用Python爬虫技术年挣10万被动收入的方式,在正式聊Python爬虫技术之前,先来说说挣钱的事,说说作为一个自由职业或兼职者怎么利用爬虫来挣钱. 个人爬虫挣钱方法大致如下 爬虫技术挣钱方法1: ...

  8. Python 爬虫案例(二)--附件下载

    Python 爬虫案例(二) 此篇文章将爬取的网站是:http://www.warrensburg-mo.com/Bids.aspx (有时候打开不一定会有标书,因为标书实时更新) 类型跟上一篇相似, ...

  9. 利用python爬虫与数据分析,打造最强玩法,轻松成为大神级玩家!

    前言: 最近迷上了一款游戏,但是作为一名程序员的我是不可能只玩游戏的,我必须把它的官网数据采集下来! 环境: windows python3.6.5 模块: requests jsonpath pyg ...

最新文章

  1. 神奇的魔法数字0x61c88647
  2. img边框的border属性
  3. java游戏_java开发的七个金典游戏你小时候肯定玩过
  4. visual studio 2005占用cpu100% -_-...
  5. Linux ifconfig指令
  6. 【codevs1052】地鼠游戏,标签不都是对的
  7. python优点是代码库支持、灵活_C++和Python混合编程的利器
  8. android select下拉列表_Python+selenium自动化之下拉列表操作(一)
  9. android 多线程编程
  10. Windows10的启动项管理
  11. 读书笔记(英文) The Ngihtingale and Rose
  12. OpenSSL Cipher 加密解密 Ruby on Rails
  13. 【非常简单bug管理工具-TAPD 】
  14. word办公插件中的佼佼者,Word魔方
  15. PyCharm添加Anaconda中的虚拟环境,Python解释器出现Conda executable is not found(解决方案)
  16. AMD EPYC CPU物理机之core(云主机最大可使用内核数)售卖机制 ---- NUMA and NPS使用
  17. java web JSP实用教程第二章
  18. Python 中 list 和 deque 性能对比
  19. 通过游戏策划阶段防治游戏外挂
  20. 虚幻引擎C++开发学习(二)上

热门文章

  1. LibSVM使用记录 C++ Visual studio
  2. Hadoop, Hbase
  3. php 地图 距离,PHP计算百度地图两个GPS坐标之间距离的方法
  4. 移动端cube界面设计html,滴滴 Web 移动端组件库 cube-ui 开源
  5. 在JAVA语言程序中main_在Java程序main方法中,正确的参数是
  6. Oracle 中 call 和 exec的区别
  7. [学习笔记]后缀自动机
  8. C# Note32: 查漏补缺
  9. 【Android开发】线程与消息处理-Handler消息传递机制之Looper
  10. java synchronized wait