使用ip代理服务器可以防止在爬虫时被封本机ip。国内免费的高匿代理可以选择西刺网

总体目标是写一个爬虫,将这些字段保存在数据库中,然后筛选速度快的作为代理服务器,实现ip代理池。

在这里使用requests库来实现。代码如下

import requests
def crawl_ips():#爬取西刺的免费高匿IP代理headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"}re = requests.get("http://www.xicidaili.com/nn", headers = headers)print(re.text)print(crawl_ips())

发现可以爬取到,接下来就是对爬到的数据进行解析入库。

打开web控制台

import requests
from scrapy.selector import Selectordef crawl_ips():#爬取西刺的免费高匿IP代理headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"}re = requests.get("http://www.xicidaili.com/nn", headers = headers)selector = Selector(text=re.text)all_trs = selector.css("#ip_list tr")for tr in all_trs[1:]:speed_str = tr.css(".bar::attr(title)").extract()[0]if speed_str:speed = float(speed_str.split("秒")[0])all_texts = tr.css("td::text").extract()print(all_texts)print(crawl_ips())

打断点测试

然后根据这个提取。

代码如下

import requests
import re
from scrapy.selector import Selectordef crawl_ips():#爬取西刺的免费高匿IP代理headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"}for i in range(1568):res = requests.get("http://www.xicidaili.com/nn/{0}".format(i),headers=headers)selector = Selector(text=res.text)all_trs = selector.css("#ip_list tr")ip_list = []for tr in all_trs[1:]:speed_str = tr.css(".bar::attr(title)").extract()[0]if speed_str:speed = float(speed_str.split("秒")[0])all_texts = tr.css("td::text").extract()match_obj1 = re.match(".*'HTTPS'.*", str(all_texts))match_obj2 = re.match(".*'HTTP'.*", str(all_texts))proxy_type = ""if match_obj1:proxy_type = "HTTPS"elif match_obj2:proxy_type = "HTTP"ip = all_texts[0]port = all_texts[1]ip_list.append((ip, port, proxy_type, speed))print(ip_list)
print(crawl_ips())

提取到了想要的结果

接下来就是将这些数据存储到数据库中。代码如下

import re
import requests
from scrapy.selector import Selector
import MySQLdbconn = MySQLdb.connect(host="localhost",user="root",passwd="1234",db="jobbole",charset="utf8")
cursor = conn.cursor()def crawl_ips():# 爬取西刺的免费ip代理headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"}for i in range(1568):res = requests.get("http://www.xicidaili.com/nn/{0}".format(i),headers=headers)selector = Selector(text=res.text)all_trs = selector.css("#ip_list tr")ip_list = []for tr in all_trs[1:]:speed_str = tr.css(".bar::attr(title)").extract()[0]if speed_str:speed = float(speed_str.split("秒")[0])all_texts = tr.css("td::text").extract()match_obj1 = re.match(".*'HTTPS'.*", str(all_texts))match_obj2 = re.match(".*'HTTP'.*", str(all_texts))proxy_type = ""if match_obj1:proxy_type = "HTTPS"elif match_obj2:proxy_type = "HTTP"ip = all_texts[0]port = all_texts[1]ip_list.append((ip, port, proxy_type, speed))for ip_info in ip_list:cursor.execute("insert xici(ip, port, speed, proxy_type) VALUES('{0}', '{1}', {2}, '{3}')".format(ip_info[0], ip_info[1], ip_info[3], ip_info[2]))conn.commit()

可是问题来了,如下图所示,数据库连接成功了,可是却进不去def crawl_ips()这个函数里面。

爬取西刺网实现ip代理池相关推荐

  1. 爬取西刺网的免费IP

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

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

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

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

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

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

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

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

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

  6. python 爬取西刺ip代理池

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

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

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

  8. python3 抓取西刺网免费代理IP并验证是否可用

    爬取西祠网免费高匿代理IP并验证是否可用存到csv文件 #导入模块import requestsimport chardetimport randomfrom scrapy.selector impo ...

  9. Python 多线程爬取西刺代理

    西刺代理是一个国内IP代理,由于代理倒闭了,所以我就把原来的代码放出来供大家学习吧. 镜像地址:https://www.blib.cn/url/xcdl.html 首先找到所有的tr标签,与class ...

最新文章

  1. 大文件做分割处理的方法——winRAR压缩分割法
  2. “东湖”的艄公--漫步绍兴(四)
  3. python3的3D实战-基于panda3d(1)
  4. 2014\Province_C_C++_B\1 啤酒和饮料
  5. java 控制语句、数组、方法
  6. 转https_免费!这个PPT转PDF的方法不学可惜!
  7. 如果一切需要重学,2014年应该学哪些技术?
  8. python培训班骗局-马哥教育官网-专业Linux培训班,Python培训机构
  9. PhpStorm中如何使用Xdebug工具,入门级操作方法
  10. 最后一波机会!!本周你最不能错过的互联网大会,VIP门票0元限时抢!
  11. 傅里叶变换的意义和理解(通俗易懂)
  12. php多层if函数,if函数嵌套计算公式用法
  13. 计算机系统维护论文5000字,计算机系统维护毕业论文
  14. 解决IE浏览器无法打开TOMCAT http://locahost:8080
  15. sockjs-node报错
  16. 移动通信网络规划:双工技术
  17. 计组期末复习之例题与解析
  18. Google Earth Engine(GEE)——ASTER全球水体数据库(ASTWBD)第1版
  19. vue 3D轮播展示 --vue-carousel-3d
  20. UN-ESD静电二极管对静电防护的作用原理

热门文章

  1. error: passing xxx as 'this' argument of xxx discards qualifiers的解决办法
  2. [网络安全学习篇55]:SQL自动化注入
  3. 可爱鱼os go语言环境 搭建+ goland安装激活
  4. SpringCloud学习使用(三)——Hystrix
  5. android手机存储总是不够,安卓手机为啥运行内存总是占一半? 不管内存大小
  6. 记录:调用山东天地图的时候跨域解决方案
  7. 基于Vue 的瑜伽场馆会员信息管理系统java设计
  8. WPF 踩坑 DataGrid DataGridTextColumn根据文本内容改变颜色绑定转换器
  9. 万 兴 神 剪手 Wondershare Filmora v9.3.6.2 简体中文版下载和安装使用说明
  10. ES分布式搜索引擎的故事