Python爬虫之urllib模块2

本文来自网友投稿

作者:PG-55,一个待毕业待就业的二流大学生。

看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于BeautifulSoup和lxml在后续的教程都会有。这里我记录的是我学习和思考的一个过程,我不是编程高手,非常感谢玄魂老师能给我这个机会,在公众号发布这种入门文章。

上一课我们成功的下载了页面的第一篇文章,这一课我们的目标是怎么把第一页的所有文章都下载下来。还是先继续我们上一节课的内容。我们这次爬取的网页还是http://tuilixue.com/zhentantuilizhishi/list_4_1.html

上一次课我们说了怎么去获取第一条的文章链接,现在我们再来爬取本页后面剩下的链接。我们先来看看上次我们爬取链接用的代码。

获取后面的链接我们能不能如法炮制呢,我们先来试试。我们把代码写成下面那样

然后我们现在来试试

结果我们发现我们试图获取的三条链接都是一样的,可以看出,这还是本页的第一篇文章的链接。证明我们这种方法是不可行的。我们回想一下上一节课我们讲的定位链接使用函数

就是这个find函数,我们看看帮助,我们发现了我们可以自定义开始寻找的下标和寻找结束的下标。我们从html里面发现我们想要爬取的链接相隔都不是很远,都处在同一个div下面。于是我们来试试,从第一条链接后面开始寻找第二条链接。

这里我们要注意后面两条代码,我们选择了开始的下标是从上一条链接的尾部开始的。现在我们来试试是否可以获取正确的链接。

现在我们获取到了三条不同的链接,我们再通过对比html来看看我是否获取的是正确的链接。

从结果来看,我们的代码成功的获取了本页的前几篇文章的链接。关于怎么获取剩下的链接我们应该有头绪了。当然,这里一页只有10篇文章,也就是只有10个链接,我们可以把我们的获取链接的代码复制10次,可是如果一页有20篇,30篇,50甚至是100篇呢,难道我们也要将代码复制那么多的次数,肯定不能,也不科学。很多同学现在已经知道要用循环来做了,但是这个要怎么循环,从哪里循环呢?我们再来看看我们上面的代码,我们发现除了第一条链接获取的代码不一样,后面两条链接获取的代码都是一样的,这时我们就知道我们应该从第二条链接获取代码进行循环了。

这里我们要先定义一个列表对获取的链接进行存储,因为是10篇文章,所以这里定义的就是一个10个元素的空的字符串列表。下面是我们循环的代码块。

这里结束一下我们为什么不是从0开始进行赋值,大家注意到没有,我们是从第二条文章链接看是循环的,那么第一条的文章链接在哪呢?当然是存储在了列表的第一个位置,也就是下标为0的那个位置了,关于range后面的范围,大家知道是包下不包上的就行了,就是说在range(x,y)的循环中,循环是从x开始,到y-1结束的,不包括y本身。我们现在来运行一下我们的代码看看是否获取的是正确的链接。

然后再次对比html

这时我们发现我们获取了链接是正确的,那么我们就要开始进行下载了。还是上一节课的代码,不过我们进行修改一些地方。因为上次只是单个链接,这次我们有一个链接列表,所以我们应该采取循环进行下载。我们要对下载重新写一个循环了。

我们现在来试试,这是上一节课我们成功下载的第一篇文章

我们现在删掉他。

现在我们看到文件夹里面是什么都没有的,我们现在开始下载。

我们这就下载完了,我打开其中一个看看。还是注意地址栏上面的链接。

可以看出我们获取的文章是正确的。因为篇幅有限,我就不一个一个去打开截图了,大家自己可以根据自己实际环境敲一下代码。

类似的功能有很多值得改进的点,大家可以发表自己的观点,进行讨论。

本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/p/6719274.html,如需转载请自行联系原作者

Python爬虫之urllib模块2相关推荐

  1. Python爬虫进阶——urllib模块使用案例【淘宝】

    Python爬虫基础--HTML.CSS.JavaScript.JQuery网页前端技术 Python爬虫基础--正则表达式 Python爬虫基础--re模块的提取.匹配和替换 Python爬虫基础- ...

  2. Python 爬虫基础 - Urllib 模块(1)

    Python的一个很广泛的功能就是爬虫.爬虫可以获取我们需要的资料,甚至进行DDos的工具.爬虫现在比较流行的是Scrapy之类的模块,但是在学习这些工具之前,先了解一下Urllib模块,知道他的基本 ...

  3. Python爬虫【urllib模块】

    通用爬虫 爬虫的一般流程 1 初始化一批URL,将这些URL放入队列 2 从队列中取出这些URL,通过DNS解析IP,对IP对应的网站下载HTML页面,保存到本地服务器中,爬取完的URL放到已爬取队列 ...

  4. pythonurllib模块-python爬虫之urllib模块和requests模块学习

    今天学习了request模块和urllib模块,了解到这两个模块最大的区别就是在爬取数据的时候连接方式的不同.urllb爬取完数据是直接断开连接的,而requests爬取数据之后可以继续复用socke ...

  5. python爬虫用urllib还是reques,python爬虫中urllib.request和requests有什么区别?

    在学习python爬虫,想要检索request相关内容时,往往会出现urllib.request和requests这两个词,urllib.request和requests都是python爬虫的模块,其 ...

  6. python爬虫之urllib库详解

    python爬虫之urllib库详解 前言 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 ...

  7. python爬虫之bs4模块(超详细)

    python爬虫之bs4模块(超详细) 一.bs4简介 二.使用方法 三.BeautifulSoup四大对象种类 (1)tag (2)NavigableString (3)BeautifulSoup ...

  8. python补充urllib教程,Python爬虫之urllib基础用法教程

    综述 本系列文档用于对Python爬虫技术进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了. Python 版本是3.7.4 urllib库介绍 它是 Python 内 ...

  9. python爬虫之requests模块2

    python网络爬虫之requests模块 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 一 获取验证码 步骤: ​ 1 注册云大码 http://www. ...

最新文章

  1. 2021中科院院士候选名单出炉:清华胡事民、南大周志华等人在列
  2. 上海市国资大数据课题启动仪式暨数据资产技术及金融行业应用沙龙隆重开
  3. .net简单算法实现无限级分类(一)
  4. 最完整的Explain总结,SQL优化不再困难
  5. 开机启动加载驱动过程中调用PostMessage函数出错
  6. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第2章-带时延位置的离散多智能体系统的一致性
  7. Eureka集群搭建
  8. WolframAlpha 的使用
  9. java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...
  10. java map 数组_java技术Spring集合属性
  11. Mac入门(四)写给Mac新人
  12. BZOJ 4568 幸运数字
  13. 深度deepin20打印失败“Can’t create temporary file”解决方法
  14. velocity模板技术生成word文档
  15. 双折射晶体偏振干涉效应
  16. 清华EMBA课程系列思考之十二(1) -- 经理人股权激励
  17. mac更换apple id_如何使用Mac在Apple TV上截屏
  18. 2020年电工(中级)实操考试视频及电工(中级)操作证考试
  19. 万云之下的新星:SD-WAN的2017
  20. 一个日常 Excel 公式引发的思考

热门文章

  1. 《新一代城市大脑建设与发展》专家研讨会在京举办(新版)
  2. 寒武纪开盘暴涨350%,市值突破1000亿,85后创始人身家超300亿!千亿盛宴背后隐忧不可忽视!...
  3. 细胞内钾多钠少——原初生物的第三大遗迹?
  4. 教育部:建设100+AI特色专业, 500万AI人才缺口要补上!
  5. 未来一年最有可能成为独角兽的29家美国初创公司
  6. 斯坦福:「目标检测」深度学习全面指南
  7. 一个后台开发工程师的“窦娥冤”!
  8. 让nginx支持php和path_info(新版本)
  9. ajax得到后端数据一直提示为[object Object]解决方法
  10. 你不知道的z-index