通过使Scrapy框架,进行数据挖掘和对web站点页面提取结构化数据,掌握如何使用Twisted异步网络框架来处理网络通讯的问题,可以加快我们的下载速度,也可深入接触各种中间件接口,灵活的完成各种需求,使得我们的爬虫更强大、更高效。

熟悉掌握基本的网页和url分析,同时能灵活使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析。同时,使用Weka 3.7工具,对所获取得到的数据进行数据挖掘分析操作。

一、项目分析

本次的实验内容要求使用scrapy框架,爬取腾讯招聘官网中网页(https://hr.tencent.com/position.php?&start=0)上所罗列的招聘信息,如:其中的职位名称、链接、职位类别、人数、地点和发布时间。并且将所爬取的内容保存输出为CSV和JSON格式文件,在python程序代码中要求将所输出显示的内容进行utf-8类型编码。

1. 网页分析

在本例实验开始之前,需要对所要求爬取的腾讯招聘网页进行网页分析,其中(https://hr.tencent.com/position.php?&start=0)的界面布局结构可如图2-1所示:

图1-1 所要爬取的信息页面布局

使用xpath_helper_2_0_2辅助工具,对其中招聘信息的职位名称、链接、职位类别、人数、地点和发布时间等信息内容进行xpath语法分析如下:

职位名称: //td[@class='l square']/a/text()

链 接: //td[@class='l square']/a/@href

职位类别://tr[@class='odd']/td[2]/text()|//tr[@class='even']/td[2]/text()

人 数://tr[@class='odd']/td[3]/text()|//tr[@class='even']/td[3]/text()

地 点://tr[@class='odd']/td[4]/text()|//tr[@class='even']/td[4]/text()

发布时间://tr[@class='odd']/td[5]/text()|//tr[@class='even']/td[5]/text()

2. url分析

scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容。

首先程序将需要发送请求的url(requests)经ScrapyEngine(引擎)交给Scheduler(调度器)。在Scheduler(排序,入队)处理后,经ScrapyEngine,DownloaderMiddlewares交给Downloader,再向互联网发送请求,并接收下载响应(response)。

最后,将响应(response)经ScrapyEngine,SpiderMiddlewares(可选)交给Spiders的同时。Spiders处理response,提取数据并将数据经ScrapyEngine交给ItemPipeline保存,提取url重新经ScrapyEngine交给Scheduler进行下一个循环。直到无Url请求程序停止结束。

二、项目工具

实验软件:Python 3.7.1     、 JetBrains PyCharm 2018.3.2       、      其它辅助工具:略

三、项目过程

(一)使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析,绘制如图3-1所示的程序逻辑框架图

图3-1 程序逻辑框架图

(二)爬虫程序调试过程BUG描述(截图)

图3-2 爬虫程序BUG描述①

图3-3  爬虫程序BUG描述②

(三)爬虫运行结果

图3-4  爬虫程序输出运行结果1

图3-5  爬虫程序输出文件

四、项目心得

关于本例实验心得可总结如下:

1、 解决图3-4的程序错误,只需在gec.py的文件中进行导入操作:from Tencent.items import TencentItem 即可。对于解决如图4-1所示的内容,请如图5-1所示:

图4-1 程序错误纠正

2、 spider打开某网页,获取到一个或者多个request,经由scrapy engine传送给调度器scheduler request特别多并且速度特别快会在scheduler形成请求队列queue,由scheduler安排执行

3、 schelduler会按照一定的次序取出请求,经由引擎, 下载器中间键,发送给下载器dowmloader 这里的下载器中间键是设定在请求执行前,因此可以设定代理,请求头,cookie等

4、 下载下来的网页数据再次经过下载器中间键,经过引擎,经过爬虫中间键传送给爬虫spiders 这里的下载器中间键是设定在请求执行后,因此可以修改请求的结果 这里的爬虫中间键是设定在数据或者请求到达爬虫之前,与下载器中间键有类似的功能

5、 由爬虫spider对下载下来的数据进行解析,按照item设定的数据结构经由爬虫中间键,引擎发送给项目管道itempipeline 这里的项目管道itempipeline可以对数据进行进一步的清洗,存储等操作 这里爬虫极有可能从数据中解析到进一步的请求request,它会把请求经由引擎重新发送给调度器shelduler,调度器循环执行上述操作

Scrapy项目 - 实现腾讯网站社会招聘信息爬取的爬虫设计的更多相关文章

  1. Scrapy项目 - 数据简析 - 实现腾讯网站社会招聘信息爬取的爬虫设计

    一.数据分析截图 本例实验,使用Weka 3.7对腾讯招聘官网中网页上所罗列的招聘信息,如:其中的职位名称.链接.职位类别.人数.地点和发布时间等信息进行数据分析,详见如下图:   图1-1 Weka ...

  2. Scrapy项目 - 项目源码 - 实现腾讯网站社会招聘信息爬取的爬虫设计

    1.tencentSpider.py # -*- coding: utf-8 -*- import scrapy from Tencent.items import TencentItem #创建爬虫 ...

  3. Scrapy项目 - 实现斗鱼直播网站信息爬取的爬虫设计

    要求编写的程序可爬取斗鱼直播网站上的直播信息,如:房间数,直播类别和人气等.熟悉掌握基本的网页和url分析,同时能灵活使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析.   一.项目 ...

  4. Scrapy项目 - 实现豆瓣 Top250 电影信息爬取的爬虫设计

    通过使Scrapy框架,掌握如何使用Twisted异步网络框架来处理网络通讯的问题,进行数据挖掘和对web站点页面提取结构化数据,可以加快我们的下载速度,也可深入接触各种中间件接口,灵活的完成各种需求 ...

  5. Scrapy项目 - 数据简析 - 实现斗鱼直播网站信息爬取的爬虫设计

    一.数据分析截图(weka数据分析截图 2-3个图,作业文字描述) 本次将所爬取的数据信息,如:房间数,直播类别和人气,导入Weka 3.7工具进行数据分析.有关本次的数据分析详情详见下图所示:   ...

  6. Scrapy项目 - 源码工程 - 实现豆瓣 Top250 电影信息爬取的爬虫设计

    一.项目目录结构 spiders文件夹内包含doubanSpider.py文件,对于项目的构建以及结构逻辑,详见环境搭建篇. 二.项目源码 1.doubanSpider.py # -*- coding ...

  7. Scrapy项目 - 数据简析 - 实现豆瓣 Top250 电影信息爬取的爬虫设计

    一.数据分析截图(weka数据分析截图 ) 本例实验,使用Weka 3.7对豆瓣电影网页上所罗列的上映电影信息,如:标题.主要信息(年份.国家.类型)和评分等的信息进行数据分析,Weka 3.7数据分 ...

  8. Scrapy案例02-腾讯招聘信息爬取

    目录 1. 目标 2. 网站结构分析 3. 编写爬虫程序 3.1. 配置需要爬取的目标变量 3.2. 写爬虫文件scrapy 3.3. 编写yield需要的管道文件 3.4. setting中配置请求 ...

  9. Scrapy项目 - 实现百度贴吧帖子主题及图片爬取的爬虫设计

    要求编写的程序可获取任一贴吧页面中的帖子链接,并爬取贴子中用户发表的图片,在此过程中使用user agent 伪装和轮换,解决爬虫ip被目标网站封禁的问题.熟悉掌握基本的网页和url分析,同时能灵活使 ...

随机推荐

  1. CSS3 transform封装

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 使用node中mysql模块连接本地数据库

    连接数据库的方法迄今为止学了三种: cmd方式.可视化工具,今天记第三种----node端连接数据库. 一:mysql模块介绍与下载 1.mysql模块是node端专门连接数据库的第三方模块 2.下载 ...

  3. PHP 与 MySQL 相关操作

    一.MySQL基操 •MySQL启动 注意:MySQL不能直接通过 mysql.exe 命令启动 MySQL客户端访问服务端需要寻找匹配:连接认证 连接:IP和端口确定,如果是本地都可以忽略 -h 主 ...

  4. 使用PHP结合Ffmpeg快速搭建流媒体服务实践

    一.背景 笔者想将自己收藏的一些电影放到网站上可以用来随时播放,不过遇到了一个问题,便是如果直接将MP4文件放放到网站目录当中,手机端必须下载整个视频才可以播放,而如果跨外网传输,这实在是不太现实. ...

  5. NLP(六) 分块、句法分析、依存分析

    内置分块器 分块:从文本中抽取短语 import nltk text = 'Lalbagh Botanical Garden is a well known botanical garden in B ...

  6. codeforces E. Trains and Statistic(线段树+dp)

    题目链接:http://codeforces.com/contest/675/problem/E 题意:你可以从第 i 个车站到 [i + 1, a[i]] 之间的车站花一张票.p[i][j]表示从 ...

  7. 8.8&8.9 dp训练小结

    写了两天的dp题,表示大多dp都不会啊,还是爆搜大法好.我真的太蒻了dp还是要多做题啊,一些基本的套路还是不熟,真正写对的dp也就一道,还一道爆搜过的,dp还有很深的坑要填啊.. 8.8 T1 质数和 ...

  8. 卸载VMware

    最近使用ubuntu的时候操作不当直接卡死了,然后强制关闭VMware软件,之后再打开时出现本文中的 “Vmware启动ubuntu 出现错误 ”这个情况,具体请看链接:https://www.cnb ...

  9. protobuf初识

    protobuf是一种高效的数据格式,平台无关.语言无关.可扩展,可用于 RPC 系统和持续数据存储系统. protobuf protobuf介绍 Protobuf是Protocol Buffer的简 ...

  10. 对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解

    转自: http://blog.csdn.net/lovexieyuan520/article/details/9974929 http://blog.csdn.net/cyp331203/artic ...