🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~
💡往期推荐:
⭐️前面比较重要的基础内容:
【Python爬虫开发基础⑧】XPath库及其基本用法
【Python爬虫开发基础⑨】jsonpath和BeautifulSoup库概述及其对比
【Python爬虫开发基础⑩】selenium概述
【Python爬虫开发基础⑫】requests库概述(文件上传、cookies处理、状态码处理、异常处理等)
⭐️爬虫的实战文章:
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片
【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息
大家可以复制代码感受一下爬虫的魅力~
💡本期内容:上一篇文章我们简单的介绍了requests库,这一篇文章我们来讲爬虫企业级开发中最重要的一个框架:scrapy~
文章目录
1 Scrapy简介
Scrapy是一个用于快速、高效地抓取和提取数据的Python开发框架。它基于异步网络库Twisted,并提供了强大的自定义功能,使得开发者能够灵活地编写网络爬虫和数据抓取程序。
以下是Scrapy框架的主要特点:
-
基于异步的架构:Scrapy使用了异步的方式处理网络请求和响应,能够高效地处理大量的并发任务。
-
强大的爬取能力:Scrapy支持多线程和分布式爬取,可以同时处理多个请求,加快数据采集速度。
-
灵活的数据提取:Scrapy提供了XPath和CSS选择器等多种方法来方便地提取网页中的数据,使得数据抽取变得简单高效。
-
自动的请求管理:Scrapy自动处理请求的发送和跟踪,包括请求的排队、重试、优先级设置等,减少了开发者的工作量。
-
丰富的中间件支持:Scrapy允许开发者通过中间件对请求和响应进行处理,添加自定义的功能或逻辑,例如代理、用户登录等。
-
内置的各种组件:Scrapy提供了许多内置的组件,如自动限速、去重过滤器、HTTP缓存等,方便开发者进行快速开发和部署。
总而言之,Scrapy是一个功能强大的网络爬虫框架,使得开发者能够高效地抓取、提取和处理互联网上的数据。它广泛应用于舆情分析、数据挖掘、价格监测、搜索引擎等领域。
2 Scrapy安装与配置
首先,确保您的Python环境已经安装和配置好。Scrapy要求使用Python 3.6或更高版本。
- 打开命令行终端(Windows用户可以使用命令提示符或PowerShell,Mac和Linux用户可以使用终端)
- 在终端中运行以下命令来安装Scrapy:
pip install scrapy
如果遇到权限问题,请尝试在命令前面加上sudo以获取管理员权限。
- 安装完成后,可以使用以下命令验证Scrapy是否成功安装:
scrapy version
如果成功安装,将显示Scrapy的版本信息。
2.1 安装失败情况分析
- 报错1: building ‘twisted.test.raiser’ extension
error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++
Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools - 解决方法:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
到这个网站找到Twisted‑20.3.0‑cp37‑cp37m‑win_amd64.whl
cp是你的python版本,amd是你的操作系统的版本
下载完成之后 使用pip install twisted的路径 安装
切记安装完twisted 再次安装scrapy - 报错2:提示python -m pip install --upgrade pip
- 解决方法:运行python -m pip install --upgrade pip
- 报错3:win32的错误
- 解决方法:pip install pypiwin32
- 其他报错解决方法:使用anaconda
3 Scrapy基本使用
3.1 创建Scrapy项目
打开命令行终端,通过以下命令创建一个新的Scrapy项目:
scrapy startproject project_name
这将在当前目录下创建一个名为"project_name"的Scrapy项目。
注意:项目的名字不允许使用数字开头 也不能包含中文
3.2 创建Spider
要在spiders文件夹中去创建爬虫文件
进入项目目录,并通过以下命令创建一个爬虫(Spider)
cd project_name
scrapy genspider 爬虫文件的名字 要爬取网页
scrapy genspider spider_name example.com
一般情况下不需要添加http协议 因为start_urls的值是根据allowed_domains修改的。所以添加了http的话 那么start_urls就需要我们手动去修改了
这就是刚创建好的baidu.py
3.3 编写爬虫代码
我们需要实现parse()
方法来解析和提取页面数据。
3.4 运行爬虫
输入以下命令
scrapy crawl 爬虫的名字
4 爬虫遇到的RobotsTxt
RobotsTxt(机器人协议)是一种用来指导搜索引擎爬虫在访问网站时应该遵守的规则。它通常位于网站根目录下的名为"robots.txt"的文本文件中。RobotsTxt文件使用简单的语法规则来控制哪些页面可以被爬取,哪些页面不可以被爬取。
以下是RobotsTxt的基本用法和语法解释:
-
User-agent (用户代理)
–指定要约束的搜索引擎爬虫的名称或标识。
–可以使用"*"表示适用于所有爬虫。 -
Disallow (禁止访问)
–指定不允许爬虫访问的URL路径。
–使用相对路径或绝对路径指定禁止访问的页面。
–可以使用多个Disallow规则来指定多个禁止访问的路径。 -
Allow (允许访问)
–指定允许爬虫访问的URL路径。
–通常与Disallow一起使用,当Disallow规则具有更高优先级时,Allow规则可以用来覆盖部分限制。 -
Sitemap (网站地图)
–指定网站的XML Sitemap文件的路径。
–Sitemap文件包含了网站中所有可供爬取的URL地址,并帮助搜索引擎更好地了解网站结构。
例如:
User-agent: *
Disallow: /private/
Disallow: /secret.html
Allow: /public/
Sitemap: https://www.example.com/sitemap.xml
在scrapy中,我们只需要将settings.py中的这一行注释掉或者设为false即可
接下来我们再次运行就可以看到我们在parse中写的内容了,证明该代码执行成功