零基础自学用Python 3开发网络爬虫(五): 使用第三方模块快速抓取与解析
admin
2023-07-31 01:43:18
0
  • 《零基础自学用Python 3开发网络爬虫(一)》
  • 《零基础自学用Python 3开发网络爬虫(二)》
  • 《零基础自学用Python 3开发网络爬虫(三)》
  • 《零基础自学用Python 3开发网络爬虫(四)》

在前面的四篇文章中, 我们一直采用 python 3 自带的 urllib  模块来抓取网页, 然后用 re 模块来处理抓取到的数据. 这次我们使用 Requests 库来代替 urllib, 用 BeautifulSoup 来代替 re 模块.

对于这两个模块来说, 学习使用它们的最好方法是看官方文档, 这两个模块的官方文档都有中文版(翻译的不是很完整).

  • Requests 官网
  • BeautifulSoup 官网

在 Windows 下如果安装了 Python3, 那么在 cmd 下直接可以通过 pip 来安装这两个模块, 命令如下:

12 pip install requestspip install beautifulsoup4

在 Ubuntu 下安装方法如下:

123 sudo aptget install python3pipsudo pip3 install requestssudo pip3 install beautifulsoup4

然后我们运行 Python3, 试一下是否能把这两个模块 import 进来, 就知道是否安装成功了:

123456 C:\\Users\\Liu>pythonPython 3.4.2 (v3.4.2:ab2c023a9432, OcType \”help\”, \”copyright\”, \”credits\” o>>> import requests>>> from bs4 import BeautifulSoup>>>

Requests Module

Requests 是 Python 界大名鼎鼎的一个网络库, 其设计哲学是为人类而设计, 所以他提供的功能都非常的人性化. 他的方便对我而言主要有两大点:

  • 对 GET 和 POST 方法的封装做的很好, 自动处理了编码等问题;
  • 默认开启了 Cookies 处理, 在处理需要登录的问题上面非常方便.

Requests 的方便之处不止这两点, 还提供了诸如标准登录接口之类的功能, 我们暂时用不上.

总而言之, 对于使用过 urllib 的我们来说, 用 requests 会感觉我们之前生活在石器时代. 第三方库的强大就在于这里, 这也是 Python 这么火的重要原因.

BeautifulSoup Module

BeautifulSoup 大大方便了我们对抓取的 HTML 数据的解析, 可以用tag, class, id来定位我们想要的东西, 可以直接提取出正文信息, 可以全文搜索, 同样也支持正则表达式, 相当给力.

小试牛刀

我们随便抓取一个页面, 然后用 soup 来解析一下试试他的威力:

12345678910111213141516171819202122232425262728293031 >>> import requests>>> from bs4 import BeautifulSoup>>> response = requests.get(\”http://jecvay.com\”)>>> soup = BeautifulSoup(response.text) >>> print(soup.title.text)Jecvay Notes Good luck & Have fun >>> print(soup.body.text)改版策略: 技术博客的真正索引 上周, 我换掉了我博客的主题, 使用 BootStrap 框架自己写了一个. 在自己动手写博客主题之前, 我时常时不时到后台主题商店去翻一翻, 想要发现更好看的主题. 挑选有两种:在一大堆展示面前, 快速浏览, 看到亮眼的就仔细看一看是否满意;自己想好一个目标, 然后用筛选器(或者人肉)筛选出来.阅读全文 >> (...省略若干) >>> for x in soup.findAll(\”a\”):...   print(x[\’href\’])...http://jecvay.com/2015/02/therealindexoftechblog.htmlhttp://jecvay.com/2015/02/therealindexoftechblog.htmlhttp://jecvay.com/2015/01/wordpresssupercache.htmlhttp://jecvay.com/2015/01/learningvps3.htmlhttp://jecvay.com/2015/01/nobotantiwebspider.htmlhttp://jecvay.com/2015/01/learningvps2.htmlhttp://jecvay.com/2014/12/learningvps1.htmlhttp://jecvay.com/2014/11/whatismincut.htmlhttp://jecvay.com/2014/11/compilermakesfastbuild.html/aboutme/archive

我们十分轻松的获得了全文内容以及所有链接.

重访知乎

在上一篇文章中, 我尝试使用 urllib 和 re 获取了知乎登录页面的 _xsrf 参数, 这次我们通过这两个新的模块再试一次.

打开浏览器隐身模式, 打开知乎网, 来到登录界面, 查看源代码, 搜索 xsrf 字样, 得到如下一行:

1 <input type=\”hidden\” name=\”_xsrf\” value=\”d4ff8d988193442a774bd0ccff336101\”/>

于是我们只要两行代码就能搞定:

123 >>> soup = BeautifulSoup(requests.get(\”http://www.zhihu.com\”).text)>>> print(soup.find(\”input\”, {\”name\”: \”_xsrf\”})[\’value\’])d4ff8d18b293442a764bd0ccff333601

第三方库就是这么好用!


相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...