scrapy学习笔记之hello world
1. 创建项目文档
在目标路径下,打开命令行,使用如下命令创建项目,例如项目名称为 "tutorial":
1 scrapy startproject tutorial
- 创建项目时,会自动创建对应的目录,所以没有必要自己先预先创建项目名称的目录
2. 使用pycharm创建项目
由于是在windows下采用pycharm的IDE进行开发,因此直接在pycharm上创建一个项目,目录为第一步用命令创建的目录。
如果不想用IDE,也可以直接用文本编辑器编辑,或者使用其他IDE。
3. 修改item
使用第一步的命令创建项目后,会有默认的item类,如果有必要的画,可自行的该类中添加对应的item字段,如:
1 class DmozItem(scrapy.Item):
2 # define the fields for your item here like:
3 # name = scrapy.Field()
4 title = scrapy.Field()
5 link = scrapy.Field()
6 desc = scrapy.Field()
7
4. 创建spider
在 spiders/
目录下创建对应的spider文件,如 demo_spider.py
1 import scrapy
2 from tutorial.items import DmozItem
3
4 class DmozSpider(scrapy.Spider):
5 name = "dmoz"
6 allowed_domains = ["dmoz.org"]
7 start_urls = [
8 "http://dmoztools.net/Computers/Programming/Languages/Python/Books/",
9 ]
10
11 def parse(self, response):
12 for sel in response.xpath('//ul/li'):
13 item = DmozItem()
14 item['title'] = sel.xpath('a/text()').extract()
15 item['link'] = sel.xpath('a/@href').extract()
16 item['desc'] = sel.xpath('text()').extract()
17 yield item
18
上述代码简要说明如下:
1) from tutorial.items import DmozItem
:导入 Item
类
2) name = "dmoz"
:spider的名字,在一个项目中,每个spider的名字都必须是唯一的,这个名字在运行时需要被指定,如要运行上述spider的命令为: scrapy crawl dmoz
3) strat_urls
: 用来指定目标url的数组,scrapy会根据这个数组中的url,逐个去产生Request请求,可以说是“爬虫”的入口或者起始点;除了通过数组方式指定外,也可以用函数的方式生成,指定对应的url和回调函数,例如:
1 def start_requests(self):
2 url_page = "http://dmoztools.net/Computers/Programming/Languages/Python/Books/"
3 yield scrapy.Request(url=url_page, callback=self.parse)
4
4)yield item
:产生item数据,用于将item输出
5. 使用shell进行调试
对于大部分情况来说,可能不像例子这样,直接就把 parse 函数写出来了,中间肯定要一点一点去提取相关的有用信息,确认ok之后再一点一点往 parse 函数里面添, shell 的调用方式为在命令行下输入如下命令:
1 scrapy crawl dmoz -o dmoz.json
2
这部分参见另外的文章,在此不做赘述。
6. 运行spider
调试完成之后,就可以把爬虫运行起来了,运行方式如下:
scrapy crawl dmoz
如果需要把结果输出,可以采用 -o
设置输出文件,如:
1 scrapy crawl dmoz -o dmoz.json
2
说明
- 本文中的例子的代码来自Scrapy说明文档中的例子,不过用自己的语言和理解重新整理了思路,便于入手理解,但不是很全面,详细的内容可以参考官方文档;
scrapy学习笔记之hello world的更多相关文章
- Scrapy:学习笔记(2)——Scrapy项目
Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...
- Scrapy:学习笔记(1)——XPath
Scrapy:学习笔记(1)——XPath 1.快速开始 XPath是一种可以快速在HTML文档中选择并抽取元素.属性和文本的方法. 在Chrome,打开开发者工具,可以使用$x工具函数来使用XPat ...
- scrapy 学习笔记1
最近一段时间开始研究爬虫,后续陆续更新学习笔记 爬虫,说白了就是获取一个网页的html页面,然后从里面获取你想要的东西,复杂一点的还有: 反爬技术(人家网页不让你爬,爬虫对服务器负载很大) 爬虫框架( ...
- scrapy学习笔记(1)
初探scrapy,发现很多入门教程对应的网址都失效或者改变布局了,走了很多弯路.于是自己摸索做一个笔记. 环境是win10 python3.6(anaconda). 安装 pip install sc ...
- Scrapy学习笔记(5)-CrawlSpider+sqlalchemy实战
基础知识 class scrapy.spiders.CrawlSpider 这是抓取一般网页最常用的类,除了从Spider继承过来的属性外,其提供了一个新的属性rules,它提供了一种简单的机制,能够 ...
- scrapy 学习笔记2
本章学习爬虫的 回调和跟踪链接 使用参数 回调和跟踪链接 上一篇的另一个爬虫,这次是为了抓取作者信息 # -*- coding: utf-8 -*- import scrapy class Myspi ...
- scrapy学习笔记一
以前写爬虫都是直接手写获取response然后用正则匹配,被大佬鄙视之后现在决定开始学习scrapy 一.安装 pip install scrapy 二.创建项目 scrapy startprojec ...
- Scrapy 学习笔记(一)数据提取
Scrapy 中常用的数据提取方式有三种:Css 选择器.XPath.正则表达式. Css 选择器 Web 中的 Css 选择器,本来是用于实现在特定 DOM 元素上应用花括号内的样式这样一个功能的. ...
- scrapy 学习笔记
1.scrapy 配合 selenium.phantomJS 抓取动态页面, 单纯的selemium 加 Firefox浏览器就可以抓取动态页面了, 但开启窗口太耗资源,而且一般服务器的linux 没 ...
- scrapy学习笔记
1.scrapy用哪条命令行重新编辑已有的项目?cd projectname 2.如何在pycharm中开启scrapy?先在终端创建一个项目(即文件夹),再在pycharm中打开.
随机推荐
- day 10 函数命名空间、函数嵌套和作用域
1. day 09 内容复习 # 函数 # 可读性强 复用性强 # def 函数名(): # 函数体 #return 返回值 # 所有的函数 只定义不调用就一定不执行 #先定义后调用 #函数名() # ...
- 八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)
一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...
- PlantUML + Chrome 联合使用
之前都是本地下载安装一个PlantUML,安装过程有点复杂,涉及到的其他插件也有些多. 后面发现Chrome浏览器上提供了相关插件,整个过程简直太流畅了.记录下. 安装: 打开Chrome的线上应用商 ...
- zabbix3.4.7实操总结一
一.zabbix_server的配置说明 #需要修改的内容为如下:[root@localhost ~]# cd /usr/local/zabbix/etc/[root@localhost etc]# ...
- .NET反射简单应用———遍历枚举字段
反射(Reflection)是一个非常强大的工具,可以用来查看和遍历类型和类型成员的元数据:动态创建类型实例,动态调用所创建的实例方法.字段.属性:迟绑定方法和属性.此次要介绍的是使用反射查看类型成员 ...
- 微信内嵌浏览器打开手机浏览器下载APP(APK)的方法
想必大家会经常碰到网页链接在微信内无法打开和微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢,主要有以下四点 1.网页链接被举报次数 ...
- vue2数组更新视图未更新的情况
以选中列表为例 <p @click="selectGoods(item, index)" :class="{'selected': item.isActive}&q ...
- Python学习第四天
一.数字 int 二.字符串 str #以下均为补充内容 #对于空字符串是假 #数字0是假 #数字和字符串可以相互转换 # a="123" # b=int(a) # a=123 # ...
- springboot接收delete或者put方法体参数
springboot默认配置了hiddenHttpMethodFilter(可以在springboot启动日志中看到) 因为hiddenHttpMethodFilter只会拦截get和post请求方式 ...
- JDBC Request
1.下载jdbc驱动,放至jmeter安装目录的lib目录和lib\ext目录下 PS:自己操作的时候,由于JDBC Connection Configuration中驱动名称写错,前面多了一个空格, ...