Python爬虫:Scrapy框架的安装和基本使用

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:

大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy。Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装。

Scrapy的安装

Scrapy的安装是很麻烦的,对于一些想使用Scrapy的人来说,它的安装常常就让很多人死在半路。在此我将我的安装过程和网络上整理的安装方法,分享给大家,希望大家能够安装顺利。如果你在学习Python的过程中遇见了很多疑问和难题,可以加-q-u-n 227 -435-450里面有软件视频资料免费

screenshot

Windows安装

开始之前,我们要确定自己安装了Python,本篇文章我们以Python3.5为例。Scrapy有很多依赖的包,我们来一一安装。

首先,使用pip -v,查看pip是否安装正常,如果正常,那么我们进行下一步;

pip install wheel这个包我们之前的文章介绍过,安装好他我们就可以安装一些wheel件;

lxml安装,之前的文章说过他的安装,那么我们这里在重新整理一下。whl文件地址:here。找到自己对应版本的文件,下载好后,找到文件位置,右键点击文件属性,点击安全标签,复制他的所在路径。打开管理员工具(cmd),pip install <粘贴whl路径>;

PyOpenssl 的whl文件地址:here。点击下载,whl文件安装方式同上;

Twisted框架这个框架是一个异步网络库,是Scrapy的核心。whl文件地址:here;

Pywin32这是一个Pywin32兼容的库,下载地址:here,选好版本进行下载;

如果上面的库全都安装好了,那么我们就可以安装我们的Scrapy了,pip install scrapy

是不是很麻烦呢,如果大家不喜欢折腾,那么在Windows下也可以很方便的安装。那就要使用我们之前提到的Anaconda了。具体安装大家自己找找,或者在之前的文章中找。那么他的安装Scrapy只需要一行:

conda install scrapy

Linux安装

Linux系统安装起来就要简单一点:

sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev

Mac OS安装

我们需要先安装一些C++的依赖库,xcode-select --install

需要安装命令行开发工具,我们点击安装。安装完成,那么依赖库也就安装完成了。

然后我们直接使用pip安装pip install scrapy

以上,我们的Scrapy库的安装基本上就解决了。

Scrapy的基本使用

Scrapy的中文文档地址:here

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

他的基本项目流程为:

创建一个Scrapy项目

定义提取的Item

编写爬取网站的spider并提取Item

编写Item Pipeline来存储提取到的Item(即数据)

而一般我们的爬虫流程为:

抓取索引页:请求索引页的URL并得到源代码,进行下一步分析;

获取内容和下一页链接:分析源代码,提取索引页数据,并且获取下一页链接,进行下一步抓取;

翻页爬取:请求下一页信息,分析内容并请求在下一页链接;

保存爬取结果:将爬取结果保存为特定格式和文本,或者保存数据库。

我们一步一步来看看如何使用。

创建项目

在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令(以知乎日报为例):

scrapy startproject zhihurb

该命令将会创建包含下列内容的 zhihu 目录:

zhihurb/

scrapy.cfg

zhihurb/

    __init__.py

    items.py

    pipelines.py

    settings.py

    spiders/

        __init__.py

        ...

这些文件分别是:

scrapy.cfg: 项目的配置文件zhihurb/: 该项目的python模块。之后您将在此加入代码。zhihurb/items.py: 项目中的item文件.zhihurb/pipelines.py: 项目中的pipelines文件.zhihurb/settings.py: 项目的设置文件.zhihurb/spiders/: 放置spider代码的目录.

定义Item

这一步是定义我们需要获取到的数据信息,比如我们需要获得网站里的一些url,网站文章的内容,文章的作者等。这一步定义的地方就在我们的items.py文件。

import scrapy

class ZhihuItem(scrapy.Item):

name = scrapy.Field()

article = scrapy.Field()

编写Spider

这一步就是写我们最熟悉的爬虫了,而我们的Scrapy框架可以让我们不需要去考虑实现的方法,只需要写出爬取的逻辑就可以了。

首先我们需要在 spiders/ 文件夹下创建我们的爬虫文件,比如就叫spider.py。写爬虫前,我们需要先定义一些内容。我们以知乎日报为例:https://daily.zhihu.com/

from scrapy import Spider

class ZhihuSpider(Spider):

name = "zhihu"

allowed_domains = ["zhihu.com"]

start_urls = ['https://daily.zhihu.com/']

这里我们定义了什么呢?首先我们导入了Scrapy的Spider组件。然后创建一个爬虫类,在类里我们定义了我们的爬虫名称:zhihu(注意:爬虫名称独一无二的,是不可以和别的爬虫重复的)。还定义了一个网址范围,和一个起始 url 列表,说明起始 url 可以是多个。

然后我们定义一个解析函数:

def parse(self, response):

print(response.text)

我们直接打印一下,看看这个解析函数是什么。

运行爬虫

scrapy crawl zhihu

由于Scrapy是不支持在IDE中执行,所以我们必须在命令行里执行命令,我们要确定是不是cd到爬虫目录下。然后执行,这里的命令顾名思义,crawl是蜘蛛的意思,zhihu就是我们定义的爬虫名称了。

查看输出,我们先看到的是一些爬虫类的输出,可以看到输出的log中包含定义在 start_urls 的初始URL,并且与spider中是一一对应的。我们接着可以看到打印出了网页源代码。可是我们似乎并没有做什么,就得到了网页的源码,这是Scrapy比较方便的一点。

提取数据

接着就可以使用解析工具解析源码,拿到数据了。

由于Scrapy内置了CSS和xpath选择器,而我们虽然可以使用Beautifulsoup,但是BeautifulSoup的缺点就是慢,这不符合我们Scrapy的风格,所有我还是建议大家使用CSS或者Xpath。

由于之前我并没有写过关于Xpath或者CSS选择器的用法,那么首先这个并不难,而且熟悉浏览器的用法,可以很简单的掌握他们。

我们以提取知乎日报里的文章url为例:

from scrapy import Request

def parse(self, response):

urls = response.xpath('//div[@class="box"]/a/@href').extract()

for url in urls:

    yield Request(url, callback=self.parse_url)

这里我们使用xpath解析出所有的url(extract()是获得所有URL集合,extract_first()是获得第一个)。然后将url利用yield语法糖,回调函数给下一个解析url的函数。

使用item

后面详细的组件使用留在下一章讲解,这里假如我们解析出了文章内容和标题,我们要将提取的数据保存到item容器。

Item对象相当于是自定义的python字典。 您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性)。

假如我们下一个解析函数解析出了数据

def parse_url(self, response):

# name = xxxx

# article = xxxx

# 保存

item = DmozItem()

item['name'] = name

item['article'] = article

# 返回item

yield item

保存爬取到的数据

这里我们需要在管道文件pipelines.py里去操作数据,比如我们要将这些数据的文章标题只保留 5 个字,然后保存在文本里。或者我们要将数据保存到数据库里,这些都是在管道文件里面操作。我们后面在详细讲解。

那么最简单的存储方法是使用命令行命令:

scrapy crawl zhihu -o items.json

这条命令就会完成我们的数据保存在根目录的json文件里,我们还可以将他格式保存为msv,pickle等。改变命令后面的格式就可以了。

相关文章
|
23天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
68 6
|
23天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
124 45
|
17天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
6天前
|
缓存 API 数据库
Python哪个框架合适开发速卖通商品详情api?
在跨境电商平台速卖通的商品详情数据获取与整合中,Python 语言及其多种框架(如 Flask、Django、Tornado 和 FastAPI)提供了高效解决方案。Flask 简洁灵活,适合快速开发;Django 功能全面,适用于大型项目;Tornado 性能卓越,擅长处理高并发;FastAPI 结合类型提示和异步编程,开发体验优秀。选择合适的框架需综合考虑项目规模、性能要求和团队技术栈。
18 2
|
24天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
52 4
|
8天前
|
安全 API 数据库
Python哪个框架合适开发淘宝商品详情api?
在数字化商业时代,开发淘宝商品详情API成为企业拓展业务的重要手段。Python凭借其强大的框架支持,如Flask、Django、Tornado和FastAPI,为API开发提供了多样化的选择。本文探讨了这些框架的特点、优势及应用场景,帮助开发者根据项目需求选择最合适的工具,确保API的高效、稳定与可扩展性。
17 0
|
15天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
42 0
|
23天前
|
网络协议 调度 开发者
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第27天】本文介绍了Python网络编程中的Twisted框架,重点讲解了其异步IO处理机制。通过反应器模式,Twisted能够在单线程中高效处理多个网络连接。文章提供了两个实战示例:一个简单的Echo服务器和一个HTTP服务器,展示了Twisted的强大功能和灵活性。
32 0
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
188 4
|
3月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
下一篇
无影云桌面