1.开篇 本文旨在给python初学者在进行爬虫时进行一些启发,主要是给出爬虫的基本思路,然后介绍这个第一次成果。 2.爬虫介绍 简单的爬虫主要分为四部分:了解网页、获取网页数据、解析网页、清洗数据。首先需要了解几个库:requests,beautifulsoup,urllib等。这些都是接触爬虫必须用到的库,不必再过多介绍。下面就通过四个部分来完成一次简单爬虫。 3.步骤解析 本次任务是从: http://www.chinacdio./List_Extend.aspx?id=101&CurrentPage=0所有页面上的pdf文件下载下来,并且pdf文件名和网页上的文件名一致。 首先分析该网页: 图3.1 第一页 图3.2 第二页 可以发现网址最后“page=“后的数字可以代表页数,既然如此,那么就可以通过一个for循环将四个数字填充到“page=”后以来获取这四页的信息。目录页分析完就该分析每一项的网页: 图3.3 第一项内容 图3.4 第二项内容 这里笔者只点进了两页,可以看到网址中除了id进行变化其他均未变,只要细心去找,其他所有页面皆如此,那么我们的下一步就是从目录页中找到每一个子网页的id。 图3.5 解析目录获得子网页id 运用谷歌浏览器开发者功能,很容易能找到其id,通过beautifulsoup解析获取的目录页,根据每个id前的标签截取id储存在list中。有了独特的id,就可以自动从list中获取id填充至固有网址,达到自动分别解析所有子页面。然后再看单个pdf: 图3.6 pdf1 图3.7 pdf2 相信规律很容易被发现,和获取id的方式一样,运用谷歌开发者功能,利用标签,从子网页中找到每个pdf的名字,也就是每个pdf网址中不同的部分,并保存至一个list。 接下来就是最后一步,前面的操作无非是使用了几个for循环将改网页下所有页面的pdf名称也就是最后获取pdf网址中不同部分保存了起来。只需要最后一个for循环将这些带入到不变的部分中,就可以获取每个pdf网址内容,因为每个pdf网页中无其它内容,只需要将所有数据保存,写入一个.pdf文件中就完成了。Pdf的名称也可以从最后一个list中获取。 Python代码:
4.总结 因本网页存在一些特殊问题,所以还需要具体分析才能得到笔者的代码。当然如果你们已经看明白了解说部分,那么多余的代码自然能够看懂。 笔者这里只是想通过一次自己的实践来给爬虫初学者一个思路,希望能帮助到你们。并且这里只是一些简单的爬虫,更加深层次还需要大家去探索。 编 辑 | 王楠岚 责 编 | 李和龙 where2go 团队 |
|