scrapy教程 ajax,Scrapy快速入门

Scrapy快速入门

最好的学习方法是参考例子,Scrapy 也不例外。出于这个原因,有一个 Scrapy 项目名为 quotesbot 例子,可以参考它了解和使用 Scrapy。它包含两个蜘蛛用于抓取 http://quotes.toscrape.com, 一个使用CSS选择器,而另一个使用XPath表达式。

项目 quotesbot 的源代码可在: https://github.com/scrapy/quotesbot. 在这里可以找到关于项目 README 更多信息。

如果你熟悉使用 Git,可以检出的代码。否则点击这里下载该项目源代码的 zip 文件。

现在我们一步步的了解和学习这个项目。

quotesbot 项目简介

这是一个 Scrapy 示例(入门)的项目,它实现从 http://quotes.toscrape.com 上爬行抓取名人名言。

这个项目只是针对学习演示目的。

提取数据

这个项目将提取名言,以及各自的作者姓名和标签相结合。提取的数据看起来是这样的,如下例子:

{

'author': 'Douglas Adams',

'text': '“I may not have gone where I intended to go, but I think I ...”',

'tags': ['life', 'navigation']

}

蜘蛛 - Spiders

该项目包含两个蜘蛛(Spider),可以使用 list 命令列出它们:

$ scrapy list

toscrape-css

toscrape-xpath

这两种蜘蛛提取同一网站相同的数据,但是如果要刮取 CSS,则使用 CSS 选择器,而要刮取 XPath 则采用 XPath 表达式。

您可以通过Scrapy教程去了解更多的蜘蛛。

运行蜘蛛

您可以使用 scrapy 爬行的命令,如运行一个蜘蛛:

$ scrapy crawl toscrape-css

如果想保存数据刮到一个文件,可以通过 -o 选项:

$ scrapy crawl toscrape-css -o quotes.json

代码实现

我们先来看看 quotesbot/spiders/toscrape-xpath.py 的代码实现 -

# -*- coding: utf-8 -*-

import scrapy

class ToScrapeSpiderXPath(scrapy.Spider):

name = 'toscrape-xpath'

start_urls = [

'http://quotes.toscrape.com/',

]

def parse(self, response):

for quote in response.xpath('//div[@class="quote"]'):

yield {

'text': quote.xpath('./span[@class="text"]/text()').extract_first(),

'author': quote.xpath('.//small[@class="author"]/text()').extract_first(),

'tags': quote.xpath('.//div[@class="tags"]/a[@class="tag"]/text()').extract()

}

next_page_url = response.xpath('//li[@class="next"]/a/@href').extract_first()

if next_page_url is not None:

yield scrapy.Request(response.urljoin(next_page_url))

另外一个 Spider 采用 XPath 表达式 quotesbot/spiders/toscrape-xpath.py 的代码实现 -

# -*- coding: utf-8 -*-

import scrapy

class ToScrapeSpiderXPath(scrapy.Spider):

name = 'toscrape-xpath'

start_urls = [

'http://quotes.toscrape.com/',

]

def parse(self, response):

for quote in response.xpath('//div[@class="quote"]'):

yield {

'text': quote.xpath('./span[@class="text"]/text()').extract_first(),

'author': quote.xpath('.//small[@class="author"]/text()').extract_first(),

'tags': quote.xpath('.//div[@class="tags"]/a[@class="tag"]/text()').extract()

}

next_page_url = response.xpath('//li[@class="next"]/a/@href').extract_first()

if next_page_url is not None:

yield scrapy.Request(response.urljoin(next_page_url))

参考

¥ 我要打赏

纠错/补充

收藏

下一篇:哥,这回真没有了

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值