Scrapy抓取西刺高匿代理ip
如题:因为想试试代理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相关推荐
- 爬虫(三):爬取西刺高匿代理
抓取西刺高匿代理,并验证IP的可用性,存储到本地文件中. 代码如下 # 导入模块 import requests import chardet import random from scrapy.se ...
- python3 抓取西刺网免费代理IP并验证是否可用
爬取西祠网免费高匿代理IP并验证是否可用存到csv文件 #导入模块import requestsimport chardetimport randomfrom scrapy.selector impo ...
- 8.抓取西刺网站(代理ip网站)
需求分析 使用单一ip抓取网页过程中,经常碰到IP被封的情况:现需要获取一批代理IP进行网页抓取: 目前找到一个叫"西刺"的网站,可以提供免费代理IP,领导要求对上面的IP进行爬取 ...
- python爬取高匿代理IP(再也不用担心会进小黑屋了)
一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...
- 第2.1章 scrapy之国内高匿代理IP爬取
这个网站较为简单,故作为爬虫的第一个示例 代码如下: # -*- coding: utf-8 -*- ''' Created on 2017年6月12日 从国内高匿代理IP网站中获取动态ip信息 @s ...
- 应对IP被封--抓取西刺代理,并构建自己的代理池
一.IP简介: 互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给网络上使用网际协议(英语:Inte ...
- 爬虫学习3.2 抓取西刺代理,并构建自己的代理池
任务描述 学习什么是IP,为什么会出现IP被封,如何应对IP被封的问题. 抓取西刺代理,并构建自己的代理池. 西刺直通点:https://www.xicidaili.com/ . 参考资料:https ...
- 抓取西刺代理,并构建自己的代理池
1.IP地址: 互联网协议地址(Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),是分配给用户上网使用的网际协议(IP)的设备的数字标签 ...
- 获取高匿代理ip的步骤思路
一.获取高匿代理IP思路 注意事项 做第二步之前你需要先找个地址url,用本机访问出来一个成功的页面,建议保留为html,作为后面使用,进行成功和禁用页面的对比,然后才可以高频访问此网站使你的电脑禁用 ...
最新文章
- Java8 stream filter map
- 隐马尔科夫模型HMM自学 (2)
- 最优子结构(Optimal Substructure)
- WinForm程序设计-根据工具栏上按钮的标题调用不同的功能表单
- 在单个try-with-resources语句中仔细指定多个资源
- mysql链接压测_MySQL压测工具mysqlslap的介绍与使用
- 使用Typora绘制流程图
- 怎么用python制作随机点名软件_python用tkinter实现一个简易能进行随机点名的界面...
- python实现翻转给定列表中的元素
- 安装mosek,license安装位置查找
- 直博人数远大于硕士人数,清华计算机系到底有多强?
- VLAN Trunk
- 信息科采购服务器可行性,与HP合作 南方医院PACS系统创新效益
- java将图片的url转换成File,File转换成二进制流byte
- 使用Mac本打造你的高效率融合双系统(结尾附视频)
- 【译】Executor, ExecutorService 和 Executors 间的不同
- LabVIEW播放提示声音或者音乐
- 机器视觉设计,如何正确的选择相机和镜头?
- 《数学建模简明教程--基于python》学习笔记-第二章-绘图与解方程组-课后习题解答
- js 弹出QQ对话框