首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

爬虫学习(一):爬取静态博客(上)

导读:

最近越来越意识到数据的重要了,于是开始学习爬虫。

在网上买了两本爬虫类的书籍——《Python网络爬虫 从入门到实践》(唐松、陈智铨编著)和《Python3网络爬虫开发实战》(廖雪峰著)。

因为后者太厚了,所以先看唐松和陈智铨的那本。不用担心,两本书上的代码都可以在Python3.6版本中运行通过。

当然,由于爬虫的目标网站改版,所以唐松在知乎和他的个人博客更新了部分章节,在网上搜他的名字就能搜到了。

最后在网上找到了一个网站,觉得这个网站上有些内容不错,而且还是静态的,正好可以练练手。

关于对此站的爬取,一共分两篇写完:

在本篇中爬取此站的一个栏目,而且是用单线程,爬取的数据存储在txt文件中。

在下一篇中,我用多线程来爬取全站的内容,然后用其他格式存储数据(看情况)。

正文:

运行环境:Windows10,Python3.6,浏览器用Chrome。

过程分三步:

分析源码并爬取所有文章链接

用BeautifulSoup解析数据得到文章内容

将文章内容存储于同一目录下的txt文件中

1.分析源码并爬取所有文章链接

打开Chrome浏览器,输入网址进入“新成博客”,然后点击”好文“分类,这一栏目下的文章就是我这次要爬取的目标。

(1)分析源码

右击鼠标点击“检查”,点击右侧的“Elements”,然后就能看到源代码了。

我们可以看到文章在一对对的“article”标签中,“article”标签里有“h4”标签,“h4”标签里有个“a”标签,提取出“a”标签的“href”属性的值,那就是单个的文章链接了。

不过这不是完整的链接。

按住“Ctrl”键的同时鼠标点击这个链接,可以看到完整的链接:

http://zhanxincheng.com/180703213131.html

所以,我们只要从页面中提取出所有这样的href属性的值,然后再在前面加上"http://zhanxincheng.com"就是完整的文章的链接了。

以下是得到本页所有完整的文章链接的代码,我把它放到一个函数当中:

(2)得到所有文章链接

我们发现“好文”栏目下的文章共4页,55篇。

点击第2页,链接是http://zhanxincheng.com/list-5-2.html

点击第3页,链接是http://zhanxincheng.com/list-5-3.html

如此可知,'http://zhanxincheng.com/list-5-'后面加上1、2、3、4这几个数字和'.html'就能得到四个页面了。

写一个函数,用于得到4个页面的所有文章链接:

用BeautifulSoup解析数据找到文章内容

我们从all_link中选中一个链接,分析其源码,得到内容,最后以文章标题为文件名保存它们。

如这个链接:

http://zhanxincheng.com/160727191742.html

找到class值为“post-content”的div,在这个div中有一对对的p标签,标签中的内容就是文章内容。

提取数据并存储于同一目录下的txt文件中

每个p标签中的内容不带换行,所以要给它加上换行符再写入文档。

代码如下:

这个函数接收一个文章链接,然后把文章内容写入一个txt文件,文件名就是标题。

最后再写一个main()函数,其内容如下:

最后,为了让程序在遇到意外的时候还能继续运行,要加上try...except。不要加在main()函数里,而是加在main之外的其他函数当中。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180919A0IFBU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券