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

先看几张对比图,分别是官网截图和抓取下来的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下,不要选择自动换行,否则,代码部分就不好看了!

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

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

原文发布于微信公众号 - 云飞学python(P542110741)

原文发表时间:2018-04-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jessetalks

初识WEB:输入URL之后的故事

概述   为什么输入www.cnblogs.com之后敲一个回车,浏览器就会显示我们所看到的内容?这家伙在背后到底偷偷的干了哪些事情?今天我们就来挖掘一下这背...

37170
来自专栏一枝花算不算浪漫

[Java面试十]浏览器跨域问题.

497190
来自专栏蔡述雄的专栏

包学会之浅入浅出Vue.js:开学篇

Vue 是国人写的,技术文档也妥妥的是中文,想到这我就有学习的动力。

51.8K700
来自专栏腾讯移动品质中心TMQ的专栏

手把手教你搭建安卓自动化框架之UIAutomator

前言 谷歌对UI测试(UI Tetsting)的概念是:确保用户在一系列操作过程中(例如键盘输入、点击菜单、弹出对话框、图像显示以及其他UI控件的改变),你的应...

4K100
来自专栏Python爬虫与算法进阶

如何在电脑上多开微信?(windows)

新媒体管家 在电脑上多开微信,在工作中很常见,今天来介绍一种简单的方法。(windows下) 这个问题在百度和知乎上都有许多回答,很多都是:长按Enter 电脑...

46680
来自专栏知晓程序

手把手教你开发电商类小程序 Vol.1 | 实战教程

19140
来自专栏腾讯AlloyTeam的专栏

Node 直出理论与实践总结

直出是什么?到底是怎样的性能优化?本文将结合从在浏览器输入url,到展示最终页面的过程来对其进行一步步分析,并将在手Q web 中的实际应用实践进行总结。

86100
来自专栏听雨堂

JQuery笔记(三) jquery的用途

  近期jquery的学习经历了一些反复:开始时觉得非常强大,比js好用,和css关系密切,一句话:完美。等到把《锋利的JQuery》看完,又有点不知道用它来干...

34590
来自专栏别先生

Intellij Idea中Backspace无法使用,Ctrl+c/Ctrl+d等等快捷键无法使用的问题的解决

1:作为一个强迫症的我使用习惯了Eclipse,可能是对快捷键的依赖性,都说Idea是开发Java的最好工具,下载,安装等等(过程省略,百度很多方法),这里说一...

37560
来自专栏Python专栏

用Python给程序加个进度条

43330

扫码关注云+社区

领取腾讯云代金券