前言

学习scrapy有一段时间了,但是对了笔记的总结并没有跟上步伐,这个案例是视频教程多次给出的,但是在此进行总结和学习,提高学习效率。
由于网站结构发生改变,这篇文章的代码也随之发生改变。
Python网络爬虫实战 Scrapy
注:b站真是个好地方。

思路

对了需求无非进行下面的顺序操作。

  • 爬取IP信息
  • 验证IP信息
  • 存储IP信息

爬取

  • 新建项目
scrapy startproject collectips
  • 进入项目
cd collectips
  • 建立模板
scrapy genspider xici xicidaili.com
  • 分析结构(个人习惯)
scrapy shell http://www.xicidaili.com/nn/
#分析要存取的数据(此处注意表格的提取方式)

注:结构发现无论如何编写shell命令,返回内容都为空。有幸在CSDN的一篇博文告诉了我答案。 Scrapy抓取西刺高匿代理ip

  • 更改命令
scrapy shell -s USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36" "http://www.xicidaili.com/nn/"

注:除命令改变,编写爬虫的设置文件Settings.py也需要改变。

  • 设置User-agent
    更改配置文件中USER-AGENT一行,将注释去掉。可以将其设置为
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36'
  • 结构分析
    xpath
ip = response.xpath('//table[@id="ip_list"]/tr/td[2]/text()').extract()
port = response.xpath('//table[@id="ip_list"]/tr/td[3]/text()').extract()
address = response.xpath('//table[@id="ip_list"]/tr/td[4]/a/text()').extract()
annoy = response.xpath('//table[@id="ip_list"]/tr/td[5]/text()').extract()
type = response.xpath('//table[@id="ip_list"]/tr/td[6]/text()').extract()
speed =  response.xpath('//table[@id="ip_list"]/tr/td[7]/div/@title').re('\d{0,2}\.\d{0,}')
time = response.xpath('//table[@id="ip_list"]/tr/td[8]/div/@title').re('\d{0,2}\.\d{0,}')
live = response.xpath('//table[@id="ip_list"]/tr/td[9]/text()').extract()
check =  response.xpath('//table[@id="ip_list"]/tr/td[10]/text()').extract()

css

ip = item.css("td:nth-child(2)::text").extract()
port = item.css("td:nth-child(3)::text").extract()
address = item.css("td:nth-child(4) a::text").extract()
type = item.css("td:nth-child(5)::text").extract()
protocol = item.css("td:nth-child(6)::text").extract()
speed = item.css("td:nth-child(7) div::attr(title)").extract()
time = item.css("td:nth-child(8) div::attr(title)").extract()
alive = item.css("td:nth-child(9)::text").extract()
proof = item.css("td:nth-child(10)::text").extract()
  • 编辑item.py
# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass CollectipsItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()ip = scrapy.Field()port = scrapy.Field()address = scrapy.Field()annoy = scrapy.Field()type = scrapy.Field()speed = scrapy.Field()time = scrapy.Field()live = scrapy.Field()check = scrapy.Field()
  • 更改xici.py
# -*- coding: utf-8 -*-
import scrapy
from collectips.items import CollectipsItemclass XiciSpider(scrapy.Spider):name = 'xici'allowed_domains = ['xicidaili.com']start_urls = ['http://www.xicidaili.com']#开始请求地址def start_requests(self):reqs = []for i in range(1,2600):req=scrapy.Request("http://www.xicidaili.com/nn/%s"%i)reqs.append(req)return reqsdef parse(self, response):item = []for info in response.xpath('//table[@id="ip_list"]/tr')[1:]:collecte = CollectipsItem()collecte['ip'] = info.xpath('td[3]/text()').extract_first()collecte['port'] = info.xpath('td[3]/text()').extract_first()collecte['address'] = info.xpath('td[4]/a/text()').extract_first()collecte['annoy'] = info.xpath('td[5]/text()').extract_first()collecte['type'] = info.xpath('td[6]/text()').extract_first()collecte['speed'] =  info.xpath('td[7]/div/@title').re('\d{0,2}\.\d{0,}')collecte['time'] = info.xpath('td[8]/div/@title').re('\d{0,2}\.\d{0,}')collecte['live'] = info.xpath('td[9]/text()').extract_first()collecte['check'] =  info.xpath('td[10]/text()').extract_first()item.append(collecte)return item
  • 运行爬虫
scrapy crawl xici -o xici.json

结果日志文件返回大量503 Service Unavailable,用浏览器也无法访问,看来代理访问尤其必要。待恢复后进行缓慢爬取IP。

对“西刺免费代理IP“爬取、测试并存入MySQL相关推荐

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

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

  2. 高可用免费代理ip爬取实战

    我们在使用爬虫的时候,会对代理ip有一定程度的需求.今天爬取的这个免费代理网站不是大家已经爬烂的西刺和66等代理网站,是我无意间发现的~ 这个网站还是有一点意思的. 注意到没有,这里的ip地址被换成了 ...

  3. 蚂蚁代理免费代理ip爬取(端口图片显示+token检查)

    分析 蚂蚁代理的列表页大致是这样的: 端口字段使用了图片显示,并且在图片上还有各种干扰线,保存一个图片到本地用画图打开观察一下: 仔细观察蓝色的线其实是在黑色的数字下面的,其它的干扰线也是,所以这幅图 ...

  4. 爬虫篇——代理IP爬取备用及存储

    爬虫篇--代理IP爬取备用及存储 代码 代码 本文通过抓取免费的高匿IP代理,将其写入列表并保存为json格式文件,且将代码进行了封装,方便以后抓取数据时动态的更新handle的IP地址,从一方面避免 ...

  5. 爬虫之使用代理ip爬取

    爬虫之代理ip的应用 ​ 在爬虫的过程中,我们经常会遇见很多网站采取了防爬虫技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力. ​ 如果一直用同一个代理ip爬取这个网 ...

  6. 数据抓取 -- 使用代理IP爬取数据:(2):使用timeout 时要注意,防止数据加载不完整 ,导致爬取丢失(举例)

    问题: 在使用代理IP爬取数据的时候,经常会出现爬取的网址信息不完整的现象.其中有个原因就是timeout设置问题. 代码如下: import requests from bs4 import Bea ...

  7. 快代理IP爬取 并建立可用IP池

    下面展示一些 内联代码片. #快代理IP爬取 并建立可用IP池 import requests import time from lxml import etree from fake_userage ...

  8. python爬虫开发数据库设计入门经典_Python3实现的爬虫爬取数据并存入mysql数据库操作示例...

    本文实例讲述了Python3实现的爬虫爬取数据并存入mysql数据库操作.分享给大家供大家参考,具体如下: 爬一个电脑客户端的订单.罗总推荐,抓包工具用的是HttpAnalyzerStdV7,与chr ...

  9. python爬取新闻存入数据库_python 爬取古诗文存入mysql数据库的方法

    使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column 'title' in 'field list'.原来是我写s ...

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

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

最新文章

  1. 博客访问量终于破10000了
  2. idea使用git插件,出现冲突了怎么解决?多场景分析助你解决问题
  3. Bootstrap4+MySQL前后端综合实训-Day08-PM【ajax获取表单标签内容、根据“栏目信息”添加“新闻信息”、新闻管理系统-项目展示】
  4. 链上存证、链下传输的可信数据共享平台
  5. Error: cannot allocate vector of size 88.1 Mb问题
  6. Codeigniter的一些优秀实践
  7. 浙江理工大学机械复试c语言真题,2016年浙江理工大学机械与自动控制学院计算机应用基础)之C程序设计复试笔试最后押题五套卷...
  8. Julia: Dict类型 与 Symbol
  9. Windows系统字体和系统应用字体
  10. 软考高级 真题 2009年下半年 信息系统项目管理师 论文
  11. 【单片机学习笔记】上传一整年的自学电子笔记,互相交流,共同进步。
  12. 软件测评师的一些重点①
  13. oracle彻底删除dbf文件,ORACLE 删除数据文件模拟灾难恢复
  14. python绘制国际象棋规则口诀_国际象棋摆棋口诀
  15. VC+DirectShow对视频进行图片处理(转)
  16. Androidq下编译efr32mg21
  17. dota2大魔导师出装java_DOTA2酱油大魔导师拉比克加点出装攻略
  18. pool win10提示bad_Win10怎么修复出现bad pool header蓝屏的情况?
  19. 国内移动应用开发平台哪家强?
  20. mysql公有库和私有库_带有公有和私有子网的 VPC (NAT) - Amazon Virtual Private Cloud

热门文章

  1. 主题插件WordPress淘宝客ZZDGM主题Upanel插件使用补充
  2. linux proftpd 用户,[原]把boblog博客的用户导入proftpd用户认证数据库
  3. MonkeyTest——简单无脑的移动端自动化测试(初级篇)
  4. 读书篇:《细说PHP》三、PHP的语言结构
  5. dex2jar工具及问题
  6. 嵌入式linux学习笔记(2)
  7. Java 内存模型(JMM)
  8. 中文分词库jieba介绍
  9. 快速下载谷歌云盘大文件的5种方法
  10. Pytorch 多GPU数据并行(DataParallel)