前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python新手爬虫,简单制作抓取廖雪峰的教程的小爬虫

Python新手爬虫,简单制作抓取廖雪峰的教程的小爬虫

作者头像
云飞
发布2018-09-14 16:52:40
1.4K0
发布2018-09-14 16:52:40
举报

先看几张对比图,分别是官网截图和抓取下来的txt文档的截图,不算那难看的排版的话,内容是一致的,图片用url替换了!

在整个抓取过程中,除了普通的文本以外,还需要处理3个地方,分别是:代码、图片、视频,因为目前只写入了文本文件,所以直接抓到图片或者视频的地址,标识清楚后写入到txt,这里可以再进一步,写到word/pdf或者其他文件,留待以后改进!

话不多说,先来看看整个爬虫过程吧!

目标:廖雪峰官网—python教程

工具:pycharm、python3.6、requests库、time库、lxml库

思路:

  • 抓取所有的目录章节url
  • 找到url内教程主体所在的div
  • 遍历div下所有标签,文本和代码部分内容直接保存
  • 区分其中的代码、图片、视频3个内容,分别以文本、url的形式保存并做好标识
  • 加入时间计数,统计总用时

大致如上,我们先来抓取所有的章节url,这里我们用xpath 来匹配div,然后循环div下的所有a标签的文本和href属性,这两个为章节的名字和url,当然url部分需要拼接,加入域名就可以!

Header和主页信息,请自行添加哦!

取到章节信息后,还需要判断是否存在子章节,存在则需要继续取,观察网页后发现子章节所在标签为a标签的平级div标签,用if判断就可以!网页结构如下

代码我们这样写

其中get_summary()函数是我自定义的下载函数,代码如下

传入3个参数:url是开始我们抓到的章节或者子章节的url,name为章节名,title为子章节名,默认为空,这样做是为了在写入文件时进行判断,大家自行查看就可以,注意的是前面说到的3个地方,文章中的代码部分是在<pre>标签下,和<p>标签一样取出内容即可,图片和视频所在的标签分别做判断,存在则将url写入文本!

最终运行程序结果

在txt下,不要选择自动换行,否则,代码部分就不好看了!

整个爬虫部分很简单,复杂的部分是处理各种标签及标签下的其他内容,最后写入文件因为不需要排版,反而简单。

欢迎大家来找我一起交流,完善代码!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云飞学python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档