c爬虫抓取网页数据(58同城:PythonDesignDesignonPython报纸杂志)

优采云 发布时间: 2021-09-13 04:02

  c爬虫抓取网页数据(58同城:PythonDesignDesignonPython报纸杂志)

  摘要:为了快速获取职位信息,根据“无忧”网页的特点,设计了三个基于Python的爬虫来抓取职位相关数据。通过提取关键词,匹配符合条件的职位信息,抓取相关内容存入Excel文件,方便查找相关职位信息和具体需求。实验结果表明,该程序能够快速、海量地捕捉相关职位信息,针对性强,简单易读,有利于对职位信息的进一步挖掘和分析。

  关键词:Python;爬虫;位置; 51job;

  基于Python的51-job数据抓取程序设计

  摘要:为了快速获取职位信息,根据“未来无忧”网页的特点,设计了三种基于Python的爬虫程序来抓取职位相关数据。通过提取关键词,匹配职位信息,将相关内容抓取到Excel文件中,方便查找相关职位信息和具体要求。实验结果表明,该程序能够快速、海量地捕获相关职位信息,且针对性强、易读,有利于对职位信息的进一步挖掘和分析。

  关键字:Python;爬虫;位置;未来无忧;

  

  0、引言

  随着互联网时代的飞速发展,可以通过互联网获取海量数据,足不出户就可以了解瞬息万变的世界[1]。我们可以在互联网上获取招聘信息,而不仅限于互联网。报纸、杂志等纸质媒体可以让求职者快速有效地获取自己想要的招聘信息。每年9、4月是毕业生求职的高峰期,快速有效地获取招聘信息成为求职过程中的关键环节。为此,本文设计了一个基于python的爬虫程序。目前国内最著名的求职软件有“智联招聘”、“51job”、“”等,本文主要介绍“51job”的招聘信息。抓住并分析。现有数据采集程序的采集方式单一,用户无法选择最快的采集方式。程序针对这个问题做了进一步的优化,设计了三种数据采集方法。用户可以选择和输入关键字,匹配招聘信息的位置。设计更合理,用户体验会更好[2]。

  本文提出的程序使用爬虫获取职位信息,包括:职位名称、职位、地点、公司名称、薪资范围、职位内容、招聘网址、发布日期。并将获取的信息保存在本地,用于后续的数据挖掘和分析。本文中的爬虫程序收录三种爬虫方法,分别是Re、XPath、Beatuiful Soup。用户可以自行选择自己想要的爬虫方式,输入位置的关键词,通过关键词匹配,获取对应的位置信息。

  1、相关概念

  1.1 Python 语言

  Python 语言语法简单、清晰、功能强大且易于理解。可以运行在Windows、Linux等操作系统上; Python是一种面向对象语言,具有效率高、面向对象编程简单等优点[3-4]。 Python是一种语法简洁的脚本语言,并且支持动态输入,使得Python成为许多操作系统平台上的理想脚本语言,特别适合快速应用开发[5]。 Python 收录了一个网络协议标准库,可以抽象和封装各种层次的网络协议,这使得用户可以进一步优化程序逻辑。其次,Python非常擅长处理各种模式的字节流,开发速度非常快[6-7]。

  1.2 网络爬虫

  Web Crawler[8](Web Crawler),是一种根据一定的规则自动提取网页的应用程序或脚本。是在搜索引擎上完成数据爬取的关键步骤,可在互联网网站页面下载。爬虫用于将互联网上的网页保存在本地,以供参考[9-10]。爬虫程序用于通过分析页面源文件的 URL,从一个或多个初始页面的 URL 中检索新的 Web 链接。网页链接,然后继续寻找新的网页链接[11],如此循环往复,直到所有页面都被抓取并分析完毕。当然,这是一种理想的情况。根据目前公布的数据,最好的搜索引擎只抓取了整个互联网不到一半的网页[12]。

  2、程序设计

  本文的爬虫程序主要分为5个模块。首先根据Request URL获取需要爬取数据的页面,使用关键词通过Re、XPath、Beautiful Soup三种方法过滤符合条件的职位信息,包括职位名称、职位、地点、公司名称、薪资范围、职位内容、招聘网站、发布日期均保存在本地,方便后续数据挖掘和分析。

  2.1 获取网页信息

  在抓取网页信息之前,需要获取网页的信息,从中找出需要的信息进行抓取。首先打开Chrome浏览器,进入51job网页,打开开发者选项,找到网络,获取请求头中的URL和headers[13]。在预览中可以看到当前网页的源代码,可以从源代码中找到需要爬取的信息,即职位名称、职称、职位、公司名称、薪资范围、职位内容、招聘网址、发布日期,并找到当前页和下一页的偏移值,以便后面的爬虫可以抓取到设计中使用。

  2.2 主程序设计

  将Beautiful Soup、XPath、Regex的文件名打包成字典,并标注序号,设计进入程序的页面,并在页面上显示提示信息。请根据用户的选择选择一种爬虫方式,进入对应的程序,等待用户输入需要查询的位置关键词,启动爬虫程序,开始抓取数据[14]。抓取完成后,提示用户数据抓取完成,保存到本地文件,供用户使用和分析。

  2.3 重新编程

  正则表达式 (Re) 是对字符串(包括普通字符(例如 a 和 z 之间的字母)和特殊字符(称为“元字符”))进行运算的逻辑公式。一些定义的特定字符和这些特定字符的组合形成一个“规则串”[15],这个“规则串”用于表达对字符串的过滤逻辑。正则表达式是一种文本模式,用于描述搜索文本时要匹配的一个或多个字符串。

  根据上面得到的网页信息,所需信息的字符串可以用Re表示,其中:

  

  通过获取日期,用户可以了解最新的工作信息。根据职位的详细信息,求职者可以快速了解公司的要求和该职位的相关职位信息。通过上述正则表达式得到的信息保存在本地Excel文件中,方便求职者查看。

  2.4 XPath 编程

  XPath 是 XML 路径语言。它是一种用于确定 XML(标准通用标记语言的子集)文档中某个部分的位置的语言 [16]。 XPath 基于 XML 的树结构,具有不同类型的节点,包括元素节点、属性节点和文本节点,提供在数据结构树中查找节点的能力。最初,XPath 的初衷是将其用作 XPointer 和 XSLT 之间的通用语法模型。但 XPath 很快就被开发人员采用为一种小型查询语言。

  XPath 比 Re 简单。 Re语言容易出错,无法正确获取所需信息。通常可以在 Chrome 中添加 XPath Helper 插件。可以直接将网页源代码复制成XPath格式,方便快捷。通常不容易犯错。

  在 XPath 程序中,其中:

  

  对比XPath和Re的代码,很明显XPath的代码比Re的代码简洁。

  2.5 Beautiful Soup 程序设计

  Beautiful Soup 提供了一些简单的、python 风格的函数来处理导航、搜索、修改分析树和其他功能 [16]。它是一个工具箱,为用户提供需要通过解析文档获取的数据,因为它简单,所以不用太多代码就可以写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档为 utf-8 编码。无需考虑编码方式,除非文档没有指定编码方式,此时Beautiful Soup无法自动识别编码方式。那么,只需要解释一下原来的编码方式即可。

  2.5.1 解析库

  本文介绍几个python解析库并进行比较。如表1所示,本文使用的解析器为python标准解析器。

  

  2.5.2 标签选择器

  标签选择器可以选择元素,获取名称、属性和内容,可以进行嵌套选择,可以获取子节点、后代节点、父节点、祖先节点等。标签选择器可以分为标准选择器和CSS 选择器。标签选择器可以根据标签名称、属性和内容查找文档。有两个常用的函数。其中, find_all (name, attrs, recursive, text, **kwargs ) 用于返回所有符合条件的元素; find (name, attrs, recursive, text, **kwargs) 用于返回第一个符合条件的元素。 CSS选择器直接将select()传入CSS选择器完成元素选择。

  本文设计的程序中选择了CSS选择器,通过select()函数完成数据选择,其中:'int(str(soup.select('div.rt span.dw_c_orange' ) [0]. next Sibling))'#获取当前页码

  

  3、实验结果

  使用本文设计的爬虫程序进行如下实验:首先进入主程序,点击运行程序,程序返回图1所示界面。

  

  接下来,如图2,输入数字“2”选择BeautifulSoup解析方式,输入关键词python启动爬虫,程序正常运行。

  

  程序运行后,可以在本地文件夹中找到名为“python position”的Excel文件。打开文件,可以看到如图3所示的信息。

  

  4、结论

  本文根据Python语言简洁易读的特点,设计了三种爬取程序的方法。用户可以自行选择数据分析的方法,输入需要查询的关键词,就可以从海量的作业数据中提取自己的需求,数据方便快捷。本程序通过匹配职位关键词、工作地点等信息,在一定程度上为用户提供了方便。提取的详细职业信息描述可以进一步细分,可以统计词频,可以观察到单词的出现。可以更快的了解公司和相应职位的要求,找到符合求职者的招聘信息。

  参考资料

  [1] 方锦堂。基于网络爬虫的在线教育平台设计与实现[D].北京:北京交通大学,2016.

  [2] 王八耀。基于Python的Web爬虫技术研究[J].数字技术与应用, 2017 (5):76-76.

  [3] 周中华,张惠然,谢江.基于Python的新浪微博数据爬虫[J].计算机应用, 2014, 34 (11):3131-3134.

  [4] 涂小琴。基于Python爬虫的影评情感倾向分析[J].现代计算机, 2017 (35):52-55.

  [5]郭立荣.基于Python的网络爬虫程序设计[J].电子技术与软件工程, 2017 (23) :248-249.

  [6]Lutz M.学习 Python[M]。北京:机械工业出版社,2009.

  [7] 刘志凯,张太红,刘磊。基于Web的Python3编程环境[J].计算机系统应用, 2015, 24 (7):236-239.

  [8] 王大伟。基于Python的Web API自动测试方法研究[J].电子科技,2015,2(5):573-581.

  [9]Hetland M L. Python 基础课程 [M]。北京:人民邮电出版社,2014:243-245.

  [10] 涂辉,汪峰,尚清伟。 Python3编程实现网络图像爬虫[J].计算机编程技巧与维护,2017 (23):21-22.

  [11] 高森. Python 网络编程基础[M].北京:电子工业出版社,2007.

  [12] 周丽珠,林玲。爬虫技术研究综述[J].计算机应用, 2005, 25 (9):1965-1969.

  [13] 蒋善标,黄开林,卢玉江等.基于Python的专业网络爬虫的设计与实现[J].企业技术与发展, 2016 (8):17-19.

  [14] 陈琳,任芳。基于Python的新浪微博数据爬虫程序设计[J].信息系统工程, 2016 (9):97-99.

  [15] 刘娜。 Python正则表达式高级特性研究[J].计算机编程技巧与维护,2015 (22):12-13.

  [16] 齐鹏,李银峰,宋雨薇。基于Python采集技术的Web数据[J].电子科学与技术, 2012, 25 (11):118-120.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线