解密大数据

爬虫作业3

2017-07-29  本文已影响46人  万能滴小笼包

上一节课的作业中,爬取的页面网址与主要的元素基本已确定好。

面经基本信息
#面试的基本信息
<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> 

总之,非常期待今天晚上老师的课程!


本文为 泰阁志-解密大数据 学习笔记,了解更多请关注微信“泰阁志”

上一篇下一篇

猜你喜欢

热点阅读