| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 【小白可学会系列三】爬虫框架Scrapy如何保存千万数据? -> 正文阅读 |
|
[Python知识库]【小白可学会系列三】爬虫框架Scrapy如何保存千万数据? |
文章目录前言
?一.项目描述建立爬虫的第一步就是明确我们的爬取对象,今天我们这个项目的爬取对象是职友集。这个网站可以通过索引的方式,搜索到全国上百家招聘网站的最新职位。 ?二.明确目标进入页面后,可以看到页面上有地区企业排行榜,总共有包含有四个榜单:里面含有本月人气企业榜、最佳口碑雇主、最多粉丝企业榜和最多评论企业榜。 点击本月最佳人气榜中的【北京字节跳动科技有限公司】,会跳转到它的详情页面,再点击【招聘】,就能看到这家公司正在招聘的所有岗位信息。 在下方就能看到所以岗位的招聘信息
?三.分析过程1.网址的获取首先,要看企业排行榜里的公司信息藏在了哪里。我们先去寻找 现在就让我们献出杀器:按F12,点击Network,刷新页面。点开第0个请求company/,看Response,找一下有没有榜单的公司信息在里面。 果不其然,四个榜单的所有公司信息就在html里面,如果小伙伴没看见,按 1.现在再点击Elements,点亮光标,再把鼠标移到【字节公司上】,这时就会定位到含有这家公司信息的 2.点击href="/company/10375749/",会跳转到字节这家公司的详情页面。详情页面的网址是:https://www.jobui.com/company/10375749/ 3.然后,我们把这个网址和其他公司的网址相比较,可以总结出 那么,我们只要把 仔细观察网页html的结构,你会发现,每个公司信息都藏在一个 在这里我们首先抓取最外层的 🎉分析到这里,我们已经知道构成公司详情页面的网址规律,和如何提取 2.信息的获取 我们打开【字节】的详情页面,点击【招聘】。会在页面的网址中看到比原来的网址多了一个jobs的后缀。 我们再来看看该如何获取这些公司的 公司名称藏在 你会发现:每个岗位的信息都藏在一个<class=“job-segmetation”>标签下 ?四.代码实现我们先来回顾一下如何使用Scrapy吧:
第一步首先需要创建一个Scrapy项目,在目录终端输入:scrapy startproject stan,可以得到下面的文件 我们刚刚分析的时候,已经确定要爬取的数据是公司名称、职位名称、工作地点和招聘要求。 1.定义item打开items.py文件写入下面的代码:
创建和编写爬虫文件 2.创建和编写爬虫文件:网址紧接着,我们要在spiders文件夹下创建爬虫文件,我们将它命名为
我们来简要的分析一下上面这段代码的含义:第5-12行代码:定义了爬虫类Spider_GetJobInfo、爬虫的名字GetJobsInfo、允许爬虫爬取的域名和起始网址。 剩下的代码很好理解:我们用默认的parse方法来处理response(企业排行榜的网页源代码);用BeautifulSoup来解析response;用find_all方法提取数据(公司id标识)。 想要获得公司详情页面的就必须有公司的id标识。想要抓取它,就得先抓到所有最外层的 🎉所以这里用了两个for循环,把标签的href 属性的值提取了出来,并成功构造了公司招聘信息的网址。 3.创建和编写爬虫文件:信息获取不同公司的招聘职位信息。从这里开始,就需要重新构造新的requests对象和定义新的方法处理response。 代码如下:
这段代码放在上一个方法下方 这里我讲一讲第一个yield哪一行代码的含义:scrapy.Request是构造requests对象的类。real_url是我们往requests对象里传入的每家公司招聘信息网址的参数。 callback的中文意思是回调。self.parse_GetJobInfo是我们新定义的parse_GetJobInfo方法。往requests对象里传入callback=self.parse_GetJobInfo这个参数后,引擎就能知道response要前往的下一站,是用parse_GetJobInfo()方法来解析传入的新参数。 def parse_GetJobInfo(self, response):这个方法是用来解析和提取公司招聘信息的数据。 对照一下我们上文对如何获取招聘信息的数据定位表格,你应该能比较好地理解代码。
最后,用yield语句把item传递给引擎。至此,爬虫部分的核心代码就写完啦~ ?五.数据保存数据的保存呢,有CSV和Excel等常用的方法,如果有小伙伴没学过,我可以再出一些关于python来进行Excel保存数据的教程(当然需要的人多的话,大家可以评论或私信(???)) Scrapy可以支持把数据存储成csv文件或者Excel文件,当然实现方式是不一样的。 1.CSV保存我们先来看如何讲数据保存为csv文件。存储成csv文件的方法比较简单,只需在settings.py文件里,添加如下的代码即可。
1.FEED_URI:是导出文件的路径。’%(name)s.csv’,就是把CSV文件放到与settings.py文件同级文件夹内。 2.FEED_FORMAT: 是导出数据格式,写CSV就能得到CSV格式。 3.FEED_EXPORT_ENCODING: 是导出文件编码,ansi是一种在windows上的编码格式,你也可以把它变成utf-8用在mac电脑上。
2.Excel保存Scrapy可以支持把数据存储成csv文件或者Excel文件,当然实现方式是不一样的。 只要取消ITEM_PIPELINES的注释(删掉#)即可。 接着,我们就可以去编辑pipelines.py文件。这里要注意了,我们依旧要借助openpyxl来实现对爬取到的数据进行保存。
?六.修改设置在启动爬虫之前,不要忘记在settings.py文件里添加请求头,以及把ROBOTSTXT_OBEY=True改成ROBOTSTXT_OBEY=False。
这里我们需要对#DOWNLOAD_DELAY = 3这行取消注释,同时对DOWNLOAD_DELAY这个参数的值进行修改。
DOWNLOAD_DELAY的意思是下载延迟,这个参数的作用是控制爬虫的速度。3秒对于这个项目来说太慢了,我们要把下载延迟的时间改成0.5秒。 如何运行,详细的教程,再另一篇文章这里简单说一下 创建main函数,如何输入代码:
最后保存在了excel中 📢没有看的朋友可以看看,上一篇Scrapy基础教学及实践:https://akastan.blog.csdn.net/article/details/119920323 对python感兴趣的朋友可以看看这些文章,相信我看完一定会有收获的: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/26 22:55:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |