- 前情回顾
上一节课的作业中,爬取的页面网址与主要的元素基本已确定好。
面经基本信息#面试的基本信息
<a href="">
![](/v3/images/portrait/i_header02.png)#头像
</a>
<p class="f_14 grey_99 dd_bot">面试百度的<a target="_blank" ka="interview-name1" href="/interview/3626/" class="green">数据分析实习生</a>.北京</p>#面试公司、职位、地点
<a target="_blank" ka="interview-result-1" href="/gsmsh8189347.html">
<span class="feel_fail">面试未通过</span> #面试结果
</a>
<article>
<a href="/gsmsh8189347.html?ka=interview-detail1-1" ka="interview-detail1-1" target="_blank">
<h3 class="question_title">#面经标题
面试官很亲切 数据分析岗位更愿意招收性格内向的员工。</h3>
<p class="question_content">#面经内容
面试官很亲切,虽然因为开会延迟了面试时间。岗位主要是数据分析...</p>
</a>
</article>
<div class="rdrc_center">#面试难度测评
<div>
![](/v3/images/star/i_star_blue.png)
<span class="grey_7a">我觉得面试有难度</span>
</div>
<div>
![](/v3/images/star/i_star_blue.png)
<span class="grey_7a">面试总体感觉很好</span>
</div>
</div>
然而,在做这节课的作业时,发现了一个问题:主要的面试信息<question_content> 面经内容是不完全的,需要点击“查看全文”才能看到所有的信息,且该部分的页面元素较为混乱。
这样文字叙述可能太抽象,接下来上图对比一下大家就看清楚了。
原有页面——面经内容部分的页面元素较为混乱仔细观察就可以看到,上面的红色框内的元素还算规整,而下面的主要内容信息就比较乱了。原网页此处需要点击“查看全文”才看得到所有的信息。而在爬虫的过程中,这一点是否合理我不确定,但我知道这绝对不是一个好的爬虫策略。
因此经过一番探究最后敲定了另一套方案,具体如下:
页面元素再次探究我向爬去的面经分享信息主要的页面元素为<section class="interview_item qa_item wrap_style mt15">,而具体的面经内容信息主要由<article>下包含的内容,从上图中可以看到如下的元素信息:
<a hred="/gsmsh10536702.html" ........>
这是一个面经文章的具体网页,完整的url网页为"http://www.kanzhun.com/gsmsh10536702.html",即看准网的官网链接加个后缀。而点进这个链接后,再次审查该网页的页面元素。
新网页的页面元素审查从红色边框中可以看出每个信息的页面元素都比较规整,相比于原网页,爬取会更方便、有规律一些。
所以新的爬取策略如下:“面试”导航栏——搜索关键字“数据分析”——得到所有与数据分析相关的结果页面——进入热度排名较高的公司的面经网页——先爬取公司的主要信息——再进入到各个面经的主页面爬取相关的面经信息
因为爬虫经验较少,所以上述的策略一定存在着问题。因而这一策略会随着后续课程的学习不断的改进,目前是基于我所有相关的知识做出的决策,并不是最终的爬取依据。
好的,以上就是我对上次作业的纠错与修改,下面进入这次课程的作业主题。
- 主要任务:爬取页面元素
根据老师给的爬虫代码进行修改,目前只把核心的一些代码修改了过来,而且还碰到了问题。
一、页面网址设置
仍旧以百度公司为例,具体要爬取的根目录为看准网的网址,种子url是以百度公司为主页的数据分析面经结果。
url_root = 'http://www.kanzhun.com' #根目录
url_seed = 'http://www.kanzhun.com/gsm11514.html?q=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90&ka=select-hotcom-1' #要爬取的页面
问题
#第九个面经分享
<a href="/gsmsh8190691.html" ka="interview-detail1-9" target="_blank">
<h3 class="question_title">
有自己的风格刚毕业的人不错的选择。
</h3>
</a>
#第十个面经分享
<a href="/gsmsh942478.html" ka="interview-detail1-10" target="_blank">
<h3 class="question_title">
面试官很好 开导性问题。
</h3>
</a>
上面这段html代码是我想要爬取的主要的页面元素,与老师给定的代码有些区别,老师主要爬取属性class = ‘title’的所有元素(代码links = soup.find_all('a', {'class': 'title'}) ),简书的html代码如下:
<a class="title" target="_blank" href="/p/8f6ee3b1efeb">爬虫第三次作业-0706</a>
而这样一比较,问题就出现了。我想爬取的页面信息中并没有独一无二的class属性,这就尴尬了,我如何获取href信息呢?难道要用ka属性吗?然后用正则匹配?
二、爬取页面的主要内容
进入面经的主页面(这里以网页http://www.kanzhun.com/gsmsh10536702.html为例),主要想要爬取的信息的页面元素如下:
<article>
<h1><span class="desc">百度数据分析员面试</span>挺上档次的企业,让人有想法。</h1>
<div class="question_content">面试的时候想问了我对主流的几个地图app的建议和看法,还问了我一些关于对市场的看法以及对个人规划的事情。</div>
<p class="interview_qa">面试官的问题:</p>
<p class="question_title"><em>问</em>面试的时候考官让我说一下当前对于是市场上的所有地图导航app的看法,以及对当前行业的发展走向的看法。</p>
<p class="question_title"><em>答</em>我说现在市面上的地图app主流的有百度和高达以及google。我认为做的很好的是百度和google。两者各有特的。百度有着更加亲和力的app内容,让人更喜欢,地图的精准度是前提,还能有对周边的一些地方有建议性的引导作用。google可能正引导上面更加专业,精准度也略高,但是更像是一款专业性的软件而不是一个让人更加想使用的软件</p>
</article>
对应于这样的页面结构,则对应要爬取的面经标题与面经内容的代码如下:
title = soup.find('span', {'class': 'desc'}).text#获取面经标题
content = soup.find('div', {'class': 'question_content'}).text #获取面试过程信息
content1 = soup.find('p', {'class': 'question_title'}).text #获取面试过程中面试官提到的问题,以及被面试人的回答(附加信息,面经分享中不一定有,但一定要有规则去爬取这部分的信息)
上述这段代码中,面经标题原本应该是<h1>标签中的内容,但这个标签没有任何的独一无二的属性可被识别,因此只能转战到span标签内的信息,不过应该没什么影响,毕竟内容已经得到了。
三、阶段总结
上述即为在完成作业3过程中的结论以及遇到的问题。其中遇到问题时没有足够的储备知识进行灵活的更改代码,其次因个人时间有限,并未运行代码爬取目标页面的主要元素,这一点深感惭愧!后续会抽出时间努力完善这一课的作业,严格要求自己!
除了上述的总结,其实还有一些思路的拓展:是否要将用户对这次面试的评价信息也保存下来呢?关键还有独特属性class可以筛选出信息,所以后续很可能会添加这部分任务到爬取规则中。
<div class="rdrc_center">
<div>
![](/v3/images/star/i_star_blue.png)
<span class="grey_7a">我觉得面试有难度</span>
</div>
<div>
![](/v3/images/star/i_star_blue.png)
<span class="grey_7a">面试总体感觉一般</span>
</div>
</div>
总之,非常期待今天晚上老师的课程!
本文为 泰阁志-解密大数据 学习笔记,了解更多请关注微信“泰阁志”
网友评论