📅  最后修改于: 2023-12-03 14:47:19.003000             🧑  作者: Mango
Scrapy是一个用于数据抓取的Python框架,它可以自动化地从网站中提取数据,并可以处理JS渲染的动态网页。如果你想要编写一个爬虫,Scrapy是一个非常不错的选择。
Scrapy可以通过pip安装,我们只需要在终端中输入以下命令:
pip install scrapy
安装完成后,可以在终端中输入以下命令来检查Scrapy是否已经成功安装:
scrapy version
输出的版本号即为已经安装的Scrapy的版本。
在一般情况下,创建一个爬虫需要以下步骤:
我们可以通过运行以下命令来创建一个新的Scrapy项目:
scrapy startproject myproject
这会在当前目录下创建一个名为myproject的文件夹,其中包含了Scrapy的一些默认文件结构。
接下来,我们可以创建一个爬虫:
cd myproject
scrapy genspider example example.com
这个命令将会在spiders文件夹下面创建一个名为example的爬虫,并且爬虫的起始地址为example.com。
在创建一个爬虫之后,我们需要定义如何访问网站以及如何提取其中的数据。
这需要在spider文件中定义,例如我们来看一下如何编写一个简单的爬虫,从quotes.toscrape.com中提取名言警句:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
]
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.css('span small::text').get(),
'tags': quote.css('div.tags a.tag::text').getall(),
}
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
在这个例子中,我们定义了一个叫做QuotesSpider的爬虫,它的起始地址为http://quotes.toscrape.com/page/1/。在每个页面中,我们通过CSS选择器来提取名言、作者和标签,然后通过yield关键字返回数据。最后,我们通过CSS选择器来寻找下一页的链接,如果找到则继续访问。
在我们定义好爬虫规则之后,我们可以通过以下命令来运行爬虫:
scrapy crawl quotes
其中,quotes是我们之前定义的爬虫的名字。Scrapy将会按照我们定义的规则开始执行,并且将提取到的数据输出到控制台。
Scrapy是一个非常强大的Python框架,它可以让我们轻松地从网站中提取数据。需要注意的是,爬虫的行为受到法律和道德的限制,我们应该在使用爬虫的过程中遵守相关的规定。