如题:因为想试试代理ip,所以就想着在西刺上爬一些ip用用

如上两节所示,具体如何建立Scrapy工程的细节不在赘述。

scrapy startproject xiciscrapy genspider xici http://www.xicidaili.com/nn/

建立工程后,使用IDE打开,首先编辑item

#items.py
# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.htmlimport scrapy
class XiciItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()passclass ipItem(scrapy.Item):ip = scrapy.Field()port = scrapy.Field()address = scrapy.Field()type = scrapy.Field()protocol = scrapy.Field()speed = scrapy.Field()time = scrapy.Field()alive = scrapy.Field()proof = scrapy.Field()

然后编写spider,在文件夹spiders下建立spider.py。

# coding=utf-8
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from xici.items import ipItemclass Spider(CrawlSpider):name = 'xici'allowed_domains = ['www.xicidaili.com']start_urls = ['http://www.xicidaili.com/nn/']rules = [Rule(LinkExtractor(allow=(r"http://www.xicidaili.com/nn/d+")),callback="parse_item")]def parse_item(self,response):ipItems = response.css('#ip_list tr:not(:first-child)')for item in ipItems:ip = ipItem()ip["ip"] = item.css("td:nth-child(2)::text").extract()ip["port"] = item.css("td:nth-child(3)::text").extract()ip["address"] = item.css("td:nth-child(4) a::text").extract()ip["type"] = item.css("td:nth-child(5)::text").extract()ip["protocol"] = item.css("td:nth-child(6)::text").extract()ip["speed"] = item.css("td:nth-child(7) div::attr(title)").extract()ip["time"] = item.css("td:nth-child(8) div::attr(title)").extract()ip["alive"] = item.css("td:nth-child(9)::text").extract()ip["proof"] = item.css("td:nth-child(10)::text").extract()yield ip

在这个过程中遇到了一个问题,即简单的爬取西刺页面是无法爬取的,会遇到503错误。原因是需要设置user-agent。

当然,你想指导到底它设置了什么样的限制,你可以访问robot.txt查看详情

http://www.xicidaili.com/robots.txt

robot.txt文件包含了该网站允许的用户代理和允许爬取的网页。

如何设置User-agent

在工程目录下找到Settings.py,然后找到其中的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'

这样,Scrapy就可以访问西刺了
假设此时,我们需要使用scrapy shell来检查是否可以访问西刺网站,并且调试程序,我们发现像原来那样使用

scrapy shell "http://www.xicidaili.com/nn"

并不能成功访问。那么我们需要在scrapy shell 上也设置user-agent,具体设置如下

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/"

所以OK,这样我们就可以成功的访问西刺了。此时可以使用view(response)来查看爬取下来的网页是否符合要求。

最后,处理Item,保存到本地。

# -*- coding: utf-8 -*-
import json
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.htmlclass XiciPipeline(object):def __init__(self):self.file = open('result.jl', 'w', encoding='utf-8')def process_item(self, item, spider):line = json.dumps(dict(item), ensure_ascii=False) + '\n'self.file.write(line)return item

此时,记得在Settings.py中启用pipeLine。

这里收获最大的是学习到了如何给Scarpy添加用户代理和在使用Scrapy shell 时添加用户代理。

Scrapy抓取西刺高匿代理ip相关推荐

  1. 爬虫(三):爬取西刺高匿代理

    抓取西刺高匿代理,并验证IP的可用性,存储到本地文件中. 代码如下 # 导入模块 import requests import chardet import random from scrapy.se ...

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

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

  3. 8.抓取西刺网站(代理ip网站)

    需求分析 使用单一ip抓取网页过程中,经常碰到IP被封的情况:现需要获取一批代理IP进行网页抓取: 目前找到一个叫"西刺"的网站,可以提供免费代理IP,领导要求对上面的IP进行爬取 ...

  4. python爬取高匿代理IP(再也不用担心会进小黑屋了)

    一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...

  5. 第2.1章 scrapy之国内高匿代理IP爬取

    这个网站较为简单,故作为爬虫的第一个示例 代码如下: # -*- coding: utf-8 -*- ''' Created on 2017年6月12日 从国内高匿代理IP网站中获取动态ip信息 @s ...

  6. 应对IP被封--抓取西刺代理,并构建自己的代理池

    一.IP简介: 互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给网络上使用网际协议(英语:Inte ...

  7. 爬虫学习3.2 抓取西刺代理,并构建自己的代理池

    任务描述 学习什么是IP,为什么会出现IP被封,如何应对IP被封的问题. 抓取西刺代理,并构建自己的代理池. 西刺直通点:https://www.xicidaili.com/ . 参考资料:https ...

  8. 抓取西刺代理,并构建自己的代理池

    1.IP地址: 互联网协议地址(Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),是分配给用户上网使用的网际协议(IP)的设备的数字标签 ...

  9. 获取高匿代理ip的步骤思路

    一.获取高匿代理IP思路 注意事项 做第二步之前你需要先找个地址url,用本机访问出来一个成功的页面,建议保留为html,作为后面使用,进行成功和禁用页面的对比,然后才可以高频访问此网站使你的电脑禁用 ...

最新文章

  1. Java8 stream filter map
  2. 隐马尔科夫模型HMM自学 (2)
  3. 最优子结构(Optimal Substructure)
  4. WinForm程序设计-根据工具栏上按钮的标题调用不同的功能表单
  5. 在单个try-with-resources语句中仔细指定多个资源
  6. mysql链接压测_MySQL压测工具mysqlslap的介绍与使用
  7. 使用Typora绘制流程图
  8. 怎么用python制作随机点名软件_python用tkinter实现一个简易能进行随机点名的界面...
  9. python实现翻转给定列表中的元素
  10. 安装mosek,license安装位置查找
  11. 直博人数远大于硕士人数,清华计算机系到底有多强?
  12. VLAN Trunk
  13. 信息科采购服务器可行性,与HP合作 南方医院PACS系统创新效益
  14. java将图片的url转换成File,File转换成二进制流byte
  15. 使用Mac本打造你的高效率融合双系统(结尾附视频)
  16. 【译】Executor, ExecutorService 和 Executors 间的不同
  17. LabVIEW播放提示声音或者音乐
  18. 机器视觉设计,如何正确的选择相机和镜头?
  19. 《数学建模简明教程--基于python》学习笔记-第二章-绘图与解方程组-课后习题解答
  20. js 弹出QQ对话框

热门文章

  1. vue-router之addRoutes(动态路由/权限路由)使用分析
  2. 实现输入一个十进制正整数转换为二进制输出
  3. 百度股市通日k数据接口
  4. 鲁班学院-java架构师线上培训机构哪家好
  5. 优化移动端邮件营销效果办法
  6. 四代可以安装2003服务器系统吗,2003款奥迪A8第四代WFS防盗系统结构与检修
  7. 【Python基础】02 Python基础语法
  8. 分享一个Qt实现的AI版俄罗斯方块
  9. SQL 2005镜像操作证书认证(非域方式)
  10. 用Universe Sandbox模拟引力弹弓(地球+木星)