打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
初识scrapy

Scrapy是一个用于爬取web站点并提取结构化数据的应用框架,通常我们称之为爬虫,一款优秀的python爬虫。

scrapy爬取的数据可被用在数据挖掘、信息处理、历史数据归档等非常广泛的数据分析和处理领域。

我们可以通过一个简单的例子来初步了解一下如何通过scrapy蜘蛛(spider)爬取web页面。
import scrapy
class QuotesSpider(scrapy.Spider): name = 'quotes' start_urls = [ 'http://quotes.toscrape.com/tag/humor/', ]
def parse(self, response): for quote in response.css('div.quote'): yield { 'author': quote.xpath('span/small/text()').get(), 'text': quote.css('span.text::text').get(), }
next_page = response.css('li.next a::attr("href")').get() if next_page is not None: yield response.follow(next_page, self.parse)
将这段代码保存为quotes_spider.py。
然后执行以下命令:
scrapy runspider quotes_spider.py -o quotes.json
或者:
python -m scrapy runspider quotes_spider.py -o quotes.json

执行完毕后,我们得到输出文件quotes.json。
其内容为如下的json字符串:
[{ "author": "Jane Austen", "text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d"},{ "author": "Groucho Marx", "text": "\u201cOutside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.\u201d"},{ "author": "Steve Martin", "text": "\u201cA day without sunshine is like, you know, night.\u201d"},...]
可以看到,每个项目包含两个字段:
author和text。

我们现在来分析一下上边这段代码的执行过程。

  • 当运行scrapy runspider quotes_spider.py这个命令后,scrapy会从quotes_spider.py这个脚本加载其中定义的一个spider,并在爬虫引擎中执行这个spider定义的一些方法。

  • 爬虫引擎首先打开start_urls中定义的链接(http://quotes.toscrape.com/tag/humor/),成功后会调用默认的回调函数parse,将响应消息response作为参数传入parse函数。

  • parse回调函数使用css选择器选取并循环遍历response中的quote对象,从中提取中author和text字段。并查找页面中的next标签,以确定是否继续使用同样的方法爬取和解析“下一页”。


你应该已经注意到了使用scrapy的好处:页面请求是由scrapy异步地进行调度和处理的。
这意味着scrapy不需要等待某个请求的完成和处理,它可以同时发送其他请求或者执行其他业务。同样,某个请求失败或异常也不影响其他请求的执行。

除了可以快速爬取页面,scrapy还提供了一些配置项,用来调控爬取行为。我们可以设置请求间的间隔,可以控制每个域名或每个ip的并发请求数,这样使得爬取行为看起来不那么“粗暴”。scrapy甚至提供了扩展程序以自动调整这些参数。

当然,作为一个强大的爬虫框架,scrapy提供的功能远不止此。
  • 内置增强的css选择器和xpath表达式,用来选取和解析html和xml文件,支持使用正则表达式。
  • 提供一个交互式shell控制台,方便编写和调试spider。
  • 内置多种数据输出格式(json、csv、xml),并可将数据存储在多种后端系统(ftp、s3、本地文件系统)。
  • 支持页面编码自动检测
  • 丰富的插件,可用于处理cookies/session,支持http压缩、鉴权和缓存等特性,仿造user-agent等。

总的来说,用python做爬虫,基本绕不开scrapy。我们一起学习吧。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)
爬虫框架Scrapy(1)Scrapy基础1
干货!一文教会你 Scrapy 爬虫框架的基本使用
实例演示Scrapy的基本用法
Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy快速入门
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服