Scrapy 的 Spider 的编写
来源:互联网 发布:自动化控制软件 编辑:程序博客网 时间:2024/05/21 20:26
当然,我们也可以自己写 .py 文件,不过,下面我们要介绍使用 Scrapy 的模板来生成爬虫文件的方法。
在 iTerm2 中输入:
scrapy genspider iqianyue http://iqianyue.com/
从上图中,我们可以看到,默认,使用模板 “basic” 创建了 spider “iqianyue”,程序在 spiders 文件夹下就生成了模板文件:
# -*- coding: utf-8 -*-import scrapyclass IqianyueSpider(scrapy.Spider): name = "iqianyue" allowed_domains = ["http://iqianyue.com/"] start_urls = ['http://http://iqianyue.com//'] def parse(self, response): pass
下面,我们对爬虫的文件修改如下:
# -*- coding: utf-8 -*-import scrapyfrom douban.items import MyFirstItemclass IqianyueSpider(scrapy.Spider): name = "iqianyue" allowed_domains = ["http://iqianyue.com/"] start_urls = ['http://www.iqianyue.com/articles/423525e6', 'http://www.iqianyue.com/articles/43c364c8', 'http://www.iqianyue.com/articles/3601e6c2'] def parse(self, response): item = MyFirstItem() item["urlname"] = response.xpath("/html/head/title/text()") print(item["urlname"])
同时,对 items.py 文件添加:
class MyFirstItem(scrapy.Item): urlname = scrapy.Field() urlkey = scrapy.Field() urlcr = scrapy.Field() urladdr = scrapy.Field()
然后执行命令:
scrapy crawl iqianyue --nolog
说明:crawl 就是开始爬取的意思,“iqianyue” 是 IqianyueSpider 中 name 属性的值。
下面,我们回答一个问题:为什么定义了 start_urls
属性,就默认定义了起始的网址呢?
我们看一看 scrapy.Spider 这个类的源代码就知道了。
下面我们就知道如何重写这个方法了,示例代码如下:
# -*- coding: utf-8 -*-import scrapyfrom douban.items import MyFirstItemclass IqianyueSpider(scrapy.Spider): name = "iqianyue" allowed_domains = ["http://iqianyue.com/"] start_urls = ['http://www.iqianyue.com/articles/423525e6', 'http://www.iqianyue.com/articles/43c364c8', 'http://www.iqianyue.com/articles/3601e6c2'] # 第 1 步:定义了新的属性 custom_urls = ("https://www.jd.com/", "http://www.sina.com.cn/", "http://www.163.com/") # 第 2 步:重写了 start_requests() 方法 def start_requests(self): # 在该方法中将起始网址设置从新属性 url2 中读取 for url in self.custom_urls: # 第 3 步:调用了默认的 make_requests_from_url() # 方法生成了具体请求,并通过 yield 返回 yield self.make_requests_from_url(url) def parse(self, response): item = MyFirstItem() item["urlname"] = response.xpath("/html/head/title/text()") print(item["urlname"])
再执行一遍,就可以看到,我们的爬虫,从我们自定义的 “custom_urls” 这些链接的集合开始爬取数据。
阅读全文
0 0
- Scrapy 的 Spider 的编写
- scrapy的spider
- Spider之Scrapy安装的方法详解
- 让Scrapy的Spider更通用
- scrapy如何针对不同的spider指定不同的参数
- 使用python的scrapy框架,spider与pipelines的调用
- scrapy如何针对不同的spider指定不同的参数
- 搜索引擎–Python下开源爬虫(spider)框架scrapy的使用
- windows 7 使用 scrapyd 监控 scrapy的 spider
- scrapy settings --- 为每一个spider设置自己的pipeline
- 向scrapy中的spider传递参数的几种方法
- 使用scrapy、selenium、phantojs抓取豆瓣热门电影的spider
- 关于Scrapy 自定义Spider Middleware中遇到的坑
- 关于SCRAPY运行多个SPIDER的问题
- 使用scrapy编写的爬虫
- 基于C++的Proxy list spider编写历程
- Scrapy源码分析-所有爬虫的基类-Spider(二)
- 七月算法课程《python爬虫》第五课: scrapy spider的几种爬取方式
- python设计模式之模板方法
- JavaWeb(EL表达式学习笔记)
- mysql
- Java开发数据库默认端口及网络常用端口
- 【算法设计作业】Week1
- Scrapy 的 Spider 的编写
- 浅谈vue 项目router (路由)+ views(界面)配置方案
- 何为Ant
- baber main thread barber thread
- JavaScript中的apply()
- SQL权限授予和收回
- Python 爬虫框架 Item 的编写
- 采用Github管理个人代码简明教程
- WebService的简介