| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 【小白可学会】用python爬虫框架Scrapy来完成一个小项目 -> 正文阅读 |
|
[Python知识库]【小白可学会】用python爬虫框架Scrapy来完成一个小项目 |
文章目录前言作为一个爬虫的老手了,不知道大家有没有一种感觉:要写出一个完整的爬虫程序需要做很多琐碎的工作。比如,要针对不同的网站制定不同的解析方式;要导入不同功能的模块;还要编写各种爬取流程的代码。我们在日常工作中会使用PPT模板来制作PPT。那么有没有一个现成的爬虫模板,让我们能够改之即用,也就是说对这个模板进行适当的修改,就能完成一个爬虫项目的开发呢? 那就让我们来一起学习一下Scrapy这个nb的框架 (只要认真学,绝对能搞懂) 一.什么是Scrapy在学习python的过程中,我们用到了许多的模块,他们有不同的功能,比如: 1. requests模块:进行请求 而在Scrapy框架里面,我们不需要做怎么多,因为在这个框架里面都能自动实现,下面,我们就来了解Scrapy的基础知识,包括Scrapy的结构及其工作原理
二.Scrapy的工作原理在Scrapy爬虫部门里,每个成员都各司其职,互相配合,这套运行流程的逻辑很简单,其实就是:引擎大boss说的话就是最高需求!看下面的对话: ScrapyEngine: 今天我们要爬什么呢?: Spiders: 爬取一个url:htpps://…,我已经分装成requests了 ScrapyEngine: 调度器,配合Spiders的工作。把requests都放进队列 调度器: 收到! ScrapyEngine: 下载器,把这些requests爬下来,爬取结果发给我 下载器: 下载器:收到,现在开始处理 下载器: 已完成,现在把response发给你。 ScrapyEngine: Spiders, 我已经把response发给你,请尽快解析和处理 Spiders: 收到。已完成,提取出来的Item已经发送给你了。 ScrapyEngine: 数据管道,把Spider这些Otem处理一下。 数据管道: 收到,现在开始处理。 从上面的对话可以看出Scrapy框架的工作原理。也有许多的优势和好处
三.Scrapy的用法
再了解了Scrapy的结构和工作原理,我们就来试着爬一爬——豆瓣Top250的图书。 1.明确目标我们先来看一下我们要爬取的网址 :https://book.douban.com/top250 豆瓣Top250图书一共有10页,每页有25本书籍。我们的初步目标是: 2.分析目标接下来就是要分析爬取网站的网页结构, 首先得判断这些信息被存在了哪里,为了防止出错,大家最好跟着操作,按F12打开快乐爬虫模式,点开Network 刷新页面,然后点击第0个请求top250,看Response. 我们能在里面找到书名、出版信息,说明我们想要的书籍信息就藏在这个网址的HTML里。 我们能在里面找到书名、出版信息,说明我们想要的书籍信息就藏在这个网址的HTML里。 我们可以看到,网址发生了变化,后面多了?start=25。现在的你,应该就能猜到后面的数字应该是代表一页的25本书籍吧?我们还可以看一下第三页,来验证一下 也就是说只要改变?start=后面的数字(翻一页加25),我们就能得到每一页的网址。 网页我们已经得到,接下来就是如何去得到所要爬取的内容了 还是是右击打开“检查”工具,点击Elements,再点击光标,把鼠标依次移到书名、出版信息、评分处,就能在HTML里找到这些书籍信息。如下图,《红楼梦》的书籍信息就全部放在table width="100%"标签里. 但是问题出现了: 这咋办呢?我们得继续再找一个既方便我们提取,又能包含所有书籍信息的标签。 我们可以看看table width="100%"标签下的tr class="item"元素,好像刚好都能满足我们的要求,既有class属性,又包含了书籍的信息。 最后来总结一下: 3.代码实现接下来会涉及到很多Scrapy的用法,如果想学会的话,请你一定要认真地看! (1).Scrapy的安装和文件生成使用 conda 安装 Scrapy,运行:
或者,可以从pypi安装scrappy及其依赖项
安装完成后,要在本地电脑打开一个你要保存的文件 然后,再输入一行能帮我们创建Scrapy项目的命令: 其中最重要的是spiders是放置爬虫的目录。我们可以在spiders这个文件夹里创建爬虫文件。我们来把这个文件,命名为Book_douban_Top250。后面的大部分代码都需要在这个Book_douban_Top250.py文件里编写。 (2).Scrapy核心代码接下来,都是高能部分了,跟紧了 接着我们开始编写爬虫的核心代码。 在Scrapy中,每个爬虫的代码结构基本都如下所示:
在上面我们已经找到了网站的规律,我们直接用for循环得到每个网址:
我们只先爬取豆瓣Top250前3页的书籍信息,接下来,只要再借助DoubanSpider(scrapy.Spider)中的 parse 方法处理 response,借助 BeautifulSoup 来取出我们想要的书籍信息的数据。Let’s go
按照流程,接下来就应该保存数据了,但是在Scrapy里面有点不一样哦。 spiders(如Book_douban_Top250.py)只干spiders应该做的事。对数据的后续处理,另有其他“部门”负责。 在scrapy中,我们会专门定义一个用于记录数据的类。定义这些数据类的python文件,正是items.py。接下来让我们在 items.py 中编写这部分的代码
scrapy.Field()这行代码实现的是,让数据能以类似字典的形式记录。但它却并不是dict,它的数据类型是我们定义的DoubanItem,属于“自定义的Python字典”。 紧接着,我们去重写Book_douban_Top250.py
当我们需要记录一次数据的时候,比如前面在每一个最小循环里,都要记录“书名”,“出版信息”,“评分”。我们会实例化一个item对象,利用这个对象来记录数据。一个对象对应一次数据
(3).Scrapy思路整理来让我们理一下思路:
如果现在运行还是会报错,原因在于Scrapy里的默认设置没被修改。比如我们需要修改请求头(User-Agent需要设置)。点击settings.py文件,你能在里面找到如下的默认设置代码: 又因为Scrapy是遵守robots协议的,如果是robots协议禁止爬取的内容,Scrapy也会默认不去爬取,所以我们还得修改Scrapy中的默认设置 把ROBOTSTXT_OBEY=True改成ROBOTSTXT_OBEY=False,就是把遵守robots协议换成无需遵从robots协议,这样Scrapy就能不受限制地运行。
(4).Scrapy运行想要运行Scrapy有两种方法:
大功告成,让我们来运行试一试吧。 四.总结Scarpy好使是好使,但是对于小白来说学习起来还是有一定难度的,但是我相信,在看完我的教程后,在通过自己的摸索,一定能成功的。如果有小伙伴想进一步学习可以看中文文档: 如果喜欢的话给个关注和点赞吧! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:59:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |