Python之scrapy使用教程

scrapy抓取西刺代理并用Excel保存

(一) 解析网站结构
①,首先浏览器访问西刺代理首页: 西刺免费代理IP

②,对查看网页源代码,对网页结构有初步的了解

③,因为我们使用的是 scrapy 来抓取内容。所以,我们可以先使用 scrapy shell 来模拟下scrapy的访问。cmd 中输入 >>> scrapy shell "http://www.xicidaili.com/"
我们发现运行之后返回的states状态码是 503,出现了服务器内部问题。其实不然,是因为服务器将我们识别后拒绝了。解决方法:添加 USER_AGENT 信息。
>>> scrapy shell -s USER_AGENT="浏览器的User-Agent信息" "http://www.xicidaili.com/"

⑤,完成 ③ 步骤之后,便可以对该网站进行相关的调试了

(二) 代码编写
首先根据网站结构确定我们的需求:
“IP地址”, “端口”, “服务器地址”, “匿名”, “类型”, “速度”, “连接时间”, “存活时间”, “验证时间”
然后正真进入代码编写:

①,编写 items

class IpItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()ip_address = scrapy.Field()port = scrapy.Field()server_address = scrapy.Field()hiding = scrapy.Field()kind = scrapy.Field()speed = scrapy.Field()connect_time = scrapy.Field()alive_time = scrapy.Field()
②,编写爬虫spider
这里对spider中间一些信息的处理可能比较难理解,如果没有了解到 openpyxl 表格操作的话,不过我这里做了大量的注释,相信还可以让大家了解到一些关于 openpyxl 的一些简单操作。
需要注意的是,因为每次返回的是网页的一行 tr内容,所以在处理时 记得进行内容的拷贝。不然每次都会别后面一次内容覆盖掉。
# -*- coding: utf-8 -*-
import scrapy
from IP.items import IpItemclass ProxySpider(scrapy.Spider):name = 'Proxy'allowed_domains = ['xici.com']start_urls = ['http://xici.com/']def start_requests(self):for page in range(1,11):yield scrapy.Request("http://www.xicidaili.com/nn/%d"%page)# 每次生成一个Request, 返回一页的内容# 函数返回:一页的内容。但是每次pipeline处理其中的一行def parse(self, response):item = IpItem()items = {}table_ip_list = response.xpath('//table[@id="ip_list"]')[0


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部