Scrapy是Python网络爬虫框架,它的优秀特性包括快速支持Web爬取初始URL,简单易用的数据提取规则以及多样性的支援库可帮助您加快数据爬取的速度和减少开发时间。Scrapy的运行流程相比于纯Python代码简单易懂。上文中我们已经介绍了Scrapy的主要构成和应用场景,这里就通过爬取一家知名科技网站的新闻数据,来实际演示Scrapy的代码实现及数据提取过程。
爬虫代码实现
1、创建项目和spider
首先,要创建一个Scrapy项目,可以使用命令行工具来创建:
scrapy startproject technews
然后,进入项目文件夹并执行以下命令来创建新的spider:
cd technews
scrapy genspider technews_spider www.technews.com
在其中,“technews”是项目的名称,而“www.technews.com”是要爬取的网站的域名。可以看到,Scrapy已经为我们生成了新的spider,并生成了一个新的Python文件。
2、设置爬虫规则
添加要爬取的URL列表,可以通过添加start_urls变量来完成。设置Extracted Fields来定义我们要从新闻页面中提取的数据项。以下代码为抓取当前新闻标题和URL列表:
import scrapy
class TechnewsSpider(scrapy.Spider):
name = "technews_spider"
start_urls = [
'https://www.technews.com/latestnews',
]
def parse(self, response):
title_list = response.css(".ntgmp_headline")
for title in title_list:
yield {
'title': title.css("a span::text").extract_first(),
'url': title.css("a::attr(href)").extract_first(),
}
这里用了Scrapy的CSS选择器进行页面解析。parse()函数解析请求响应并返回新闻标题和URL列表。
3、执行爬虫
现在,执行Scrapy爬虫命令,开始爬取数据:
scrapy crawl technews_spider -o technews.csv
这里将Scrapy命令中要使用的spider名称提供给Scrapy程序。输出结果将被保存在technews.csv文件中。
数据提取
运行Scrapy并获得数据之后,就需要使用Pandas等库进行数据整理和存储。下面的代码行展示如何将所获取的数据保存到CSV文件中:
import pandas as pd
# 从CSV文件中读取数据
df = pd.read_csv("technews.csv")
# 打印前5行
print(df.head())
# 将结果保存到Excel文件中
df.to_excel("technews.xlsx", index=False)
这里使用Pandas库读取CSV文件并对其进行了一些数据处理后,将其保存到Excel文件中。
总结
通过以上实际案例,可以看到Scrapy是一个用于数据抓取的非常好用的Python库。它提供了非常强大的工具和解决方案来解决数据爬取的问题,并且支持XPath和CSS选择器解析等对数据的自定义处理。此外,Scrapy还在数据导出、日志记录和状态管理等方面为用户提供了许多便利功能。
因为它的稳定性和高效性,Scrapy已经成为许多数据服务和应用程序的核心框架。如果您需要从互联网上爬取任何数据,尝试使用Scrapy将是您的不二之选。