创建第一个scrapy蜘蛛项目
来源:互联网 发布:好用的mac清理软件 编辑:程序博客网 时间:2024/06/04 08:06
创建第一个scrapy蜘蛛文件
上面我们已经成功创建了一个scrapy项目,那我们该在哪里写我们的蜘蛛呢?here,在spiders目录下面:
创建的肯定是我们的.py文件。怎么创建呢?你可以用记事本,也可以用pycharm,建议使用pycharm因为方便!首先你需要把你创建的项目mingyan2在pycharm里面打开,然后右键点击spiders,选中New再选中python File即可,如下图:
文件名的话你随意,尽量见名知意,这里我就取名为:mingyan_spider.py (保存在mingyan2/spiders目录下),再看一下创建好文件后的目录结构:
OK到这里的话我们已经成功创建了一个scrapy蜘蛛文件,我们要爬取哪个网站、爬取这个网站的神马数据,统统在这个文件里面编写,其实挺简单,就是一个.py文件而已,别把scrapy想得太复杂!
好了,接下来我们开始编写我们的第一个蜘蛛,看看需要些神马固定格式!
编写第一个蜘蛛
上面我们已经创建了一个mingyan_spider.py 的文件,那里面到底该写神马呢?当然我们需要遵守scrapy的规则,那一个蜘蛛到底需要神马规则呢?
A:首先我们需要创建一个类,并继承scrapy的一个子类:scrapy.Spider 或者是其他蜘蛛类型,后面会说到,除了Spider还有很多牛X的蜘蛛类型;
B:然后定义一个蜘蛛名,name=“” 后面我们运行的话需要用到;
C:定义我们需要爬取的网址,没有网址蜘蛛肿么爬,所以这是必须滴;
D:继承scrapy的一个方法:start_requests(self),这个方法的作用就是通过上面定义的链接去爬取页面,简单理解就是下载页面。
那我们怎么提取我们想要的数据呢?比如我想要一个文章的标题、内容、图片,这些的话就可以我们自己定义方法提取了,后面我们慢慢涉及!这里先简单的来!
好了,我们先来看看第一个简单的蜘蛛项目:
运行蜘蛛
好了,里面注释应该都很清楚了,这里就不多解释,这个栗子,会放到github,打家下载了运行一下就知道原理了!那肿么运行这个蜘蛛呢?
输入以上命令便可以运行蜘蛛了!这里要重点提醒一下,我们一定要进入:mingyan2 这个目录,也就是我们创建的蜘蛛项目目录,以上命令才有效!还有 crawl 后面跟的是你类里面定义的蜘蛛名,也就是:name,并不是项目名、也不是类名,这些细节希注意!
命令行输出了什么?
通过上面命令,命令行输出与了一下信息:
可以看到,我们刚才打的日志: 保存文件: mingyan-1.html已经显示出来,这些日志非常有用,蜘蛛如果出现问题都通过能看日志解决!
接下来我们回到项目目录下面,你会发现已经创建了两个html页面:
纳么,第一个蜘蛛已经成功运行!这一个栗子关键是了解scrapy的运行流程,快试试吧!
本项目源码地址:github
本文档配套视频教程:点击查scrapy视频教程
上面我们已经成功创建了一个scrapy项目,那我们该在哪里写我们的蜘蛛呢?here,在spiders目录下面:
创建的肯定是我们的.py文件。怎么创建呢?你可以用记事本,也可以用pycharm,建议使用pycharm因为方便!首先你需要把你创建的项目mingyan2在pycharm里面打开,然后右键点击spiders,选中New再选中python File即可,如下图:
文件名的话你随意,尽量见名知意,这里我就取名为:mingyan_spider.py (保存在mingyan2/spiders目录下),再看一下创建好文件后的目录结构:
OK到这里的话我们已经成功创建了一个scrapy蜘蛛文件,我们要爬取哪个网站、爬取这个网站的神马数据,统统在这个文件里面编写,其实挺简单,就是一个.py文件而已,别把scrapy想得太复杂!
好了,接下来我们开始编写我们的第一个蜘蛛,看看需要些神马固定格式!
编写第一个蜘蛛
上面我们已经创建了一个mingyan_spider.py 的文件,那里面到底该写神马呢?当然我们需要遵守scrapy的规则,那一个蜘蛛到底需要神马规则呢?
A:首先我们需要创建一个类,并继承scrapy的一个子类:scrapy.Spider 或者是其他蜘蛛类型,后面会说到,除了Spider还有很多牛X的蜘蛛类型;
B:然后定义一个蜘蛛名,name=“” 后面我们运行的话需要用到;
C:定义我们需要爬取的网址,没有网址蜘蛛肿么爬,所以这是必须滴;
D:继承scrapy的一个方法:start_requests(self),这个方法的作用就是通过上面定义的链接去爬取页面,简单理解就是下载页面。
那我们怎么提取我们想要的数据呢?比如我想要一个文章的标题、内容、图片,这些的话就可以我们自己定义方法提取了,后面我们慢慢涉及!这里先简单的来!
好了,我们先来看看第一个简单的蜘蛛项目:
01
import
scrapy
02
03
class
mingyan(scrapy.Spider):
#需要继承scrapy.Spider类
04
05
name
=
"mingyan2"
# 定义蜘蛛名
06
07
def
start_requests(
self
):
# 由此方法通过下面链接爬取页面
08
09
# 定义爬取的链接
10
urls
=
[
11
'http://lab.scrapyd.cn/page/1/'
,
12
'http://lab.scrapyd.cn/page/2/'
,
13
]
14
for
url
in
urls:
15
yield
scrapy.Request(url
=
url, callback
=
self
.parse)
#爬取到的页面如何处理?提交给parse方法处理
16
17
def
parse(
self
, response):
18
19
'''
20
start_requests已经爬取到页面,那如何提取我们想要的内容呢?那就可以在这个方法里面定义。
21
这里的话,并木有定义,只是简单的把页面做了一个保存,并没有涉及提取我们想要的数据,后面会慢慢说到
22
也就是用xpath、正则、或是css进行相应提取,这个例子就是让你看看scrapy运行的流程:
23
1、定义链接;
24
2、通过链接爬取(下载)页面;
25
3、定义规则,然后提取数据;
26
就是这么个流程,似不似很简单呀?
27
'''
28
29
30
page
=
response.url.split(
"/"
)[
-
2
]
#根据上面的链接提取分页,如:/page/1/,提取到的就是:1
31
filename
=
'mingyan-%s.html'
%
page
#拼接文件名,如果是第一页,最终文件名便是:mingyan-1.html
32
with
open
(filename,
'wb'
) as f:
#python文件操作,不多说了;
33
f.write(response.body)
#刚才下载的页面去哪里了?response.body就代表了刚才下载的页面!
34
self
.log(
'保存文件: %s'
%
filename)
# 打个日志
运行蜘蛛
好了,里面注释应该都很清楚了,这里就不多解释,这个栗子,会放到github,打家下载了运行一下就知道原理了!那肿么运行这个蜘蛛呢?
1
scrapy crawl mingyan2
输入以上命令便可以运行蜘蛛了!这里要重点提醒一下,我们一定要进入:mingyan2 这个目录,也就是我们创建的蜘蛛项目目录,以上命令才有效!还有 crawl 后面跟的是你类里面定义的蜘蛛名,也就是:name,并不是项目名、也不是类名,这些细节希注意!
命令行输出了什么?
通过上面命令,命令行输出与了一下信息:
01
2017-12-13 10:33:53 [scrapy.core.engine] INFO: Spider opened
02
2017-12-13 10:33:53 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
03
2017-12-13 10:33:53 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
04
2017-12-13 10:33:53 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://lab.scrapyd.cn/robots.txt> (referer: None)
05
2017-12-13 10:33:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://lab.scrapyd.cn/page/1/> (referer: None)
06
2017-12-13 10:33:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://lab.scrapyd.cn/page/2/> (referer: None)
07
2017-12-13 10:33:53 [mingyan2] DEBUG: 保存文件: mingyan-1.html
08
2017-12-13 10:33:53 [mingyan2] DEBUG: 保存文件: mingyan-2.html
09
2017-12-13 10:33:53 [scrapy.core.engine] INFO: Closing spider (finished)
10
2017-12-13 10:33:53 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
可以看到,我们刚才打的日志: 保存文件: mingyan-1.html已经显示出来,这些日志非常有用,蜘蛛如果出现问题都通过能看日志解决!
接下来我们回到项目目录下面,你会发现已经创建了两个html页面:
纳么,第一个蜘蛛已经成功运行!这一个栗子关键是了解scrapy的运行流程,快试试吧!
本项目源码地址:github
本文档配套视频教程:点击查scrapy视频教程
阅读全文
0 0
- 创建第一个scrapy蜘蛛项目
- 创建第一个scrapy项目
- Python-Scrapy创建第一个项目
- 搭建第一个scrapy项目的常见问题
- 我们的第一只蜘蛛(Scrapy)
- 创建第一个Android项目
- 创建第一个MVC项目
- django创建第一个项目
- 创建第一个Android项目
- Django 创建第一个项目
- Second-创建第一个项目
- Django 创建第一个项目
- 创建第一个Android项目
- 创建第一个github项目
- Django 创建第一个项目
- 创建第一个struts2项目
- 创建第一个struts2项目
- 创建第一个SpringBoot项目
- 数据库分页LIMIT
- java 文件上传概述
- PLC远程监控助力设备售后运维
- 【个人笔记】Ubuntu安装arm-linux-gcc 交叉工具链
- 用session做权限控制
- 创建第一个scrapy蜘蛛项目
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- 常用应用软件下载地址
- 大数据学习心得
- Google Chrome Your browser is not compatible with FlexPaper问题解决
- MVC, MVP, MVVM比较以及区别
- 数据结构-链表代码实现
- shell自动监控重启Tomcat脚本,每一分钟检查
- C# Stream 和 byte[] 之间的转换