大数据实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二次上机实验实验报告

1.创建Pycharm项目,创建Scrapy工程目录(2分)

a)使用Pycharm新建项目,安装Scrapy(本小题1分)

b)使用Pycharm中的命令行工具,创建Scrapy工程目录(本小题1分)

截图过程和结果,包括命令和输出。

2.使用Pycharm完成Scrapy爬虫程序的编写(13分)

a)给出新建的Scrapy工程目录截图,说明各个文件的作用(本小题1分)

spiders:在该目录下存放项目所需的蜘蛛,蜘蛛负责抓取项目感兴趣的信息,对于URL的选择、xpath的设置均在此文件编辑。

scrapy.cfg:项目的总配置文件,通常无须修改。

items.py:用于定义项目用到的Item 类。Item类就是一个DTO(数据传输对象),通常就是定义N个属性,相当于一哥容器接受爬取到的数据,该类需要由开发者来定义。pipelines.py:项目的管道文件,它负责处理爬取到的信息,例如对数据格式进行规范,将数据保存到文件中等,该文件需要由开发者编写。

setting.py:项目的配置文件,在该文件中进行项目相关配置,可以设置启用的各类功能。middlewares.py:中间件,处理request和reponse等相关配置。

b)给出爬虫程序运作流程,包括Scrapy运作流程,爬取思路,元素定位路径(XPath,CSS

Selector等方式),数据存储等(本小题4分)

Scrapy运作流程:由下图可知Scrapy爬虫框架主要由5个部分组成,分别是:Scrapy Engine (Scrapy引擎),Scheduler(调度器),Downloader(下载器),Spiders(蜘蛛),Item Pipeline(项目管道)。爬取过程是Scrapy引擎发送请求,之后调度器把初始URL交给下载器,然后下载器向服务器发送服务请求,得到响应后将下载的网页内容交与蜘蛛来处理,之后蜘蛛会对网页进行详细的解析。对于本次作业,初始的url为寻医问药网的眼科症状界面。蜘蛛分析的结果有两种:一种是得到新的URL,之后再次请求调度器,开始进行新一轮的爬取,不断的重复上述过程;另一种是得到所需的数据,之后会转交给项目管道继续处理。对于本次作业,首先,蜘蛛获取到特定症状的url,再请求调度器,开始新一轮爬取。在新一轮爬取过程中,蜘蛛在症状详情的网页爬取了该症状的可能疾病有关的信息,将数据传给管道。项目管道负责数据的清洗、验证、过滤、去重和存储等后期处理,最后由Pipeline输出到文

件中,或者存入数据库等。对于本次作业,管道对数据进行了初步处理。

爬取思路及Xpath:我的任务为爬取眼科各个症状中的可能疾病,所以我要首先在网页中选取各个症状,之后再打开每个症状对应的链接,在新的网页中选取出一个或多个可能疾病。首先,我选出了每个症状对应的上上级标签ul,他们的类名都为"ks-ill-list clearfix mt10",而每个症状的上级标签为li,因此,我使用的XPath为:response.xpath('//ul[@class="k s-ill-list clearfix mt10"]/li'),将包含症状的所有li标签都选择了出来。之后,我用XPath:'.//a/@href',将每个症状的url地址选出,使得爬虫进入每个症状对应的网页。

在进入症状页面之后,我找到了可能疾病所在的位置。可能疾病的信息被三个li包裹,三个li 上级为类名为"loop-tag fb clearfix bor-dash",ul的上级为类名为"blood-item panel"的div。因此,我先通过XPath:subjects = response.xpath( '//div[@class="b lood-item panel"]/ul[@class="l oop-tag clearfix bor-dash"]')选择出疾病所在的div,再通过XPath:item['mingcheng'] = subject.xpath( './/a[@class="g re"]/text()').extract(),

item['dianxingzhengzhuang']=subject.xpath('.//li[@class="l oop-tag-illmr20"]/text()').extract(),item['jiuzhenkeshi'] = subject.xpath('.//span[@class="m r10"]/text()').extract()

选择出了可能疾病名称、典型症状、就诊科室的信息。

数据存储:数据存储:我将爬取到的数据保存为csv格式。在cmd中,输入python -m scrapy crawl xywy -o xywy.csv,即可将爬取数据保存到当前文件夹。在pipeline中,我用了一些函数规范了数据的格式,去除了不必要的空格,并将数据保存到csv文件中。

c)编写程序,运行程序(本小题5分)(注意每个同学完成对应自己所被分配的爬虫目标,

完成对应程序编写)

i.完整工程代码提交(1分)

见压缩文件

ii.报告有运行截图(1分)

启动程序

过程截图

结束界面

iii.工程运行无异常(3分)

d)完成所分配的爬虫目标,提交爬虫结果文件(CSV格式)及报告中给出截图(本小题3分)

csv文件见压缩文件,截图如下:

相关文档
最新文档