Scrapy - 简要指南

本文介绍了如何使用Scrapy创建项目、编写简单的spider、使用CSS选择器和XPath获取数据、存储爬取结果以及追踪链接。通过实例展示了spider的start_requests、start_urls、follow方法以及如何处理递归链接。此外,还讲解了如何在shell中测试选择器,并介绍了如何通过参数定制spider的行为。
摘要由CSDN通过智能技术生成

创建项目

开始爬取数据之前,你必须先创建一个Scrapy项目。进入你想将项目代码保存的目录,并执行以下代码

MacBook-Pro:scrapy $ scrapy startproject projectname

这会创建一个以projectname命名的文件夹,文件夹中包括一个部署配置文件scrapy.cfg和一个项目的python模块(以projectname命名的另一个文件夹,文件夹下包含一个__init__.py文件)。python模块下包含4个.py文件和一个spiders文件夹,4个.py文件分别是项目的items定义文件items.py,pipelines文件pipelines.py,项目配置文件settings.py和项目中间件文件middlewares.py,spiders文件夹就是将来存在项目所有spiders的地方。Scrapy项目主要的精力就是放在spider的创建上,即我们主要的工作都是在spiders目录下完成的。

接下来让我们看看如何去写第一个spider

一个简单的spider

spider就是我们定义的一个scrapy.Spider的子类。在爬取数据时,scrapy会利用spider去从网页上爬取数据,所以一个最简单的spider必须包含两个部分:1. 最初的请求;2. 如何从请求返回的网页数据中解析需要的数据。另一个可选的部分是如何追踪网页上的链接,即是否要将页面的链接指向的页面也同时爬取或指定部门链接去爬取,可以说这一部分就是实现我们的spider可以爬取整个网站的所有数据而不必把所有链接地址加到第一部分"最初的请求"中的原因。

以下是一个spider的代码


运行spider

在项目的根目录执行以下命令

(scrapyEnv) MacBook-Pro:tutorial $ scrapy crawl quotes

这个命令会运行名字为quotes的spider。

简化start_requests方法

spider第一部分初始的请求start_requests方法也可以使用一个spider的属性start_urls来替代,它是一个包含初始请求地址的list。scrapy会在运行spider时用默认的start_requests方法和list中的地址来创建初始的请求。

以下是代码:


scrapy shell中使用selector获取数据

使用命令scrapy shell [url]启动scrapy shell,url可以指定也可以不指定

(scrapyEnv) MacBook-Pro:tutorial $ scrapy shell "http://quotes.toscrape.com/page/1/"
/Users/rossi/.virtualenvs/scrapyEnv/lib/python3.6/site-packages/scrapy/spiderloader.py:37: UserWarning: There are several spiders with the same name:


  QuotesSpider named 'quotes' (in tutorial.spiders.quotes_spider)
  QuotesSpider named 'quotes' (in tutorial.spiders.quotes_spider1)
  QuotesSpider named 'quotes' (in tutorial.spiders.temp)
  QuotesSpider named 'quotes' (in tutorial.spiders.temp1)


  This can cause unexpected behavior.
  warnings.warn(msg, UserWarning)
2017-10-15 21:58:11 [
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值