爬虫入门五 gooseeker

爬虫入门五:Gooseeker 简介、使用方法和案例说明

Gooseeker 是一种常用的 Python 网络爬虫框架,它可以帮助爬虫程序员轻松地获取目标网站的信息。本文将从以下几个方面为大家介绍 Gooseeker:简介、使用方法和案例说明。

一、Gooseeker 简介

Gooseeker 是一款开源的 Python 框架,它提供了一系列强大的爬虫功能,如 URL 去重、并发请求、JS 渲染等。另外,Gooseeker 社区提供了丰富的扩展插件,使得爬虫程序员可以更加灵活地完成各种数据采集任务。同时,Gooseeker 基于 Twisted 框架,可以充分利用多核 CPU 的优势,加速爬虫的运行速度。

二、Gooseeker 使用方法

1. 安装 Gooseeker

可以通过 PIP 安装 Gooseeker。

```

pip install gooseeker

```

2. 配置设置

在开始使用 Gooseeker 前,我们需要设置一些配置,来指定爬虫的行为。在 Gooseeker 中,配置设置通常保存在一个名为 settings.py 的 Python 文件中,例如:

```

BOT_NAME = 'Gooseeker'

SPIDER_MODULES = ['myproject.spiders']

NEWSPIDER_MODULE = 'myproject.spiders'

ROBOTSTXT_OBEY = True

CONCURRENT_REQUESTS = 16

DOWNLOAD_DELAY = 3

COOKIES_ENABLED = False

TELNETCONSOLE_ENABLED = False

AUTOTHROTTLE_ENABLED = True

```

下面是一些常用的配置项说明:

a. BOT_NAME:指定爬虫的名称。

b. SPIDER_MODULES 和 NEWSPIDER_MODULE:分别指定爬虫程序所在的模块和爬虫程序的名称。

c. ROBOTSTXT_OBEY:是否遵守 Robots 协议,即 robots.txt 文件中的规则。

d. CONCURRENT_REQUESTS:同时发起的请求数量。

e. DOWNLOAD_DELAY:请求的间隔时间,单位为秒。

f. COOKIES_ENABLED:是否启用 Cookie。

g. TELNETCONSOLE_ENABLED:是否启用 Telnet 控制台。

h. AUTOTHROTTLE_ENABLED:是否启用自动限速。

3. 编写爬虫程序

在设置好配置后,我们可以开始编写爬虫程序了。与其他爬虫框架类似,Gooseeker 也是基于 Spider 的概念来实现爬取网站信息的。在 Gooseeker 中,我们需要定义一个 Spider 类,来指定如何访问和解析目标网站的页面。

下面是一个简单的 Gooseeker 爬虫示例代码:

```

from gooseeker.spiders import CrawlSpider, Rule

from scrapy.linkextractors import LinkExtractor

class MySpider(CrawlSpider):

name = "my_spider"

allowed_domains = ['www.example.com']

start_urls = ['http://www.example.com']

rules = (

Rule(LinkExtractor(), callback='parse_item', follow=True),

)

def parse_item(self, response):

self.logger.info("Visited %s", response.url)

yield {

'title': response.css('title::text').get(),

'text': response.css('body::text').get(),

}

```

上述代码中,我们定义了一个名为 MySpider 的类,它继承自 CrawlSpider 类。在 MySpider 中,我们首先指定了允许爬取的域名和起始的 URL,然后构建了一个 Rule 对象,用于指定如何提取链接和解析页面内容。最后,我们定义了一个 parse_item 方法来解析页面内容。

4. 运行爬虫程序

我们可以使用命令行来启动 Gooseeker 爬虫程序。

```

scrapy crawl my_spider

```

运行后,Gooseeker 就会开始访问目标网站并解析页面内容。

三、案例说明

Gooseeker 已经成为众多开发者的首选爬虫框架之一。下面就来介绍一些使用 Gooseeker 实现的典型案例。

1. 爬取豆瓣电影 Top250

豆瓣电影 Top250 是一个非常受欢迎的电影排行榜,我们可以使用 Gooseeker 来爬取这个排行榜并获取电影的相关信息。

```

from gooseeker.spiders import CrawlSpider, Rule

from gooseeker.linkextractors import LinkExtractor

class DoubanSpider(CrawlSpider):

name = "douban_spider"

allowed_domains = ['movie.douban.com']

start_urls = ['https://movie.douban.com/top250']

rules = (

Rule(LinkExtractor(allow='/subject/\d+/'), callback='parse_item', follow=True),

)

def parse_item(self, response):

self.logger.info("Visited %s", response.url)

yield {

'title': response.css('h1 span::text').get(),

'director': response.css('div#info a[rel="v:directedBy"]::text').get(),

'casts': response.css('div#info a[rel="v:starring"]::text').getall(),

'rating': response.css('strong.rating_num::text').get(),

'year': response.css('span.year::text').get(),

}

```

上述代码中,我们定义了一个名为 DoubanSpider 的类,它继承自 CrawlSpider 类。在 DoubanSpider 中,我们首先指定了允许爬取的域名和起始的 URL,然后构建了一个 Rule 对象,用于提取电影详情页的链接。最后,我们定义了一个 parse_item 方法来解析电影的相关信息。

2. 爬取全国高校信息

Gooseeker 可以帮助我们快速地爬取一些公共信息,如全国高校信息、城市天气等。下面是一个爬取全国高校信息的示例代码。

```

from gooseeker.spiders import CrawlSpider, Rule

from gooseeker.linkextractors import LinkExtractor

class UniversitySpider(CrawlSpider):

name = "university_spider"

allowed_domains = ['college.gaokao.com']

start_urls = ['https://college.gaokao.com/schlist/']

rules = (

Rule(LinkExtractor(restrict_css='.sch_table tbody tr:nth-child(odd) a'), callback='parse_item', follow=True),

Rule(LinkExtractor(restrict_css='.page_down'), follow=True),

)

def parse_item(self, response):

self.logger.info("Visited %s", response.url)

yield {

'name': response.css('#info_res h1::text').get(),

'location': response.css('.major::text').get(),

'rank': response.css('.rank_num::text').get(),

'type': response.css('.school_descr li:nth-child(1)::text').get(),

'level': response.css('.school_descr li:nth-child(2)::text').get(),

}

```

上述代码中,我们定义了一个名为 UniversitySpider 的类,它继承自 CrawlSpider 类。在 UniversitySpider 中,我们首先指定了允许爬取的域名和起始的 URL,然后构建了两个 Rule 对象,用于提取高校详情页的链接和翻页。最后,我们定义了一个 parse_item 方法来解析高校的相关信息。

结语

本文为大家介绍了 Gooseeker 爬虫框架的基本概念、使用方法和常用示例。Gooseeker 具有灵活、高效、易用等特点,可以帮助开发者实现各种需求的数据抓取。希望本文能对初学者们有所帮助。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(117) 打赏

评论列表 共有 2 条评论

指缝中滑落的完美 1年前 回复TA

黑的黑夜也会迎来黎明,再长的坎坷也会出现平路,怀抱着一棵永不放弃的希望之心,明天就会有温暖的阳光雨露,坚持吧朋友,胜利就在自己的下一步路!

猫卆 2年前 回复TA

果圆规的两只脚都动,永远也画不出一个圆。

立即
投稿
发表
评论
返回
顶部