第二部分 自动化任务5 从 Web 抓取信息

第11章 从 Web 抓取信息

几个模块:

  1. webbrowser:是 Python 自带的,打开浏览器获取指定页面。
  2. requests:从因特网上下载文件和网页。
  3. Beutiful Soup:解析 HTML, 即网页编写的格式。
  4. selenium:启动并控制一个 Web 浏览器。selenium 能够填写表单,并模拟鼠标在个浏览器中点击。

11.1 项目:利用 webbrowser 模块的 mapIt.py
webbrowser.open()
将一条街道的地址拷贝到剪贴板,并在百度地图上打开它的地图。(从命令行参数或剪贴板中取得街道地址;打开 Web 浏览器,指定该地址的百度地图页面)

第1步:弄清楚 URL
第2步:处理命令行参数
第3步:处理剪贴板内容,加载浏览器
第4步:类似的想法

  • 在独立的浏览器标签中,打开一个页面中的所有链接。
  • 用浏览器打开本地天气的 URL。
  • 打开你经常查看的几个社交网站。

11.2 用 requests 模块从 Web 上下载文件
11.2.1 用 requests.get()函数下载一个网页
requests.get()
requests.code.ok
(HTTP 协议中“OK”的状态码是 200。你可能已经熟悉 404 状态码,它表示“没找到”)。
requests.get()函数接受一个要下载的 URL 字符串。通过在 requests.get()的返回值上调用 type(),你可以看到它返回一个 Response 对象,其中包含了 Web 服务器对你的请求做出的响应。
方法:Response 对象
status_code
text
11.2.2 检查错误
方法:Response 对象
raise_for_status()

11.3 将下载的文件保存到硬盘
首先,必须用“写二进制”模式打开该文件,即向函数传入字符串'wb',作为 open()的第二参数。目的是为了保存该文本中的“Unicode 编码”。
为了将 Web 页面写入到一个文件,可以使用 for 循环和 Response 对象的 iter_content()方法。
方法:Response 对象
iter_content()

11.4 HTML
11.4.1 学习 HTML 的资源
11.4.2 快速复习
某些元素具有 id 属性,可以用来在页面上唯一地确定该元素。
11.4.3 查看网页的 HTML 源代码
在浏览器的任意网页上点击右键,选择 View Source 或 View page source,查看该页的 HTML 文本。
11.4.4 打开浏览器的开发者工具
除了查看网页的源代码,你还可以利用浏览器的开发者工具,来检查页面的 HTML。
不要用正则表达式来解析 HTML
11.4.5 使用开发者工具来寻找 HTML 元素
程序利用 requests 模块下载了一个网页之后,你会得到该页的 HTML 内容,作为一个字符串值。现在你需要弄清楚,这段HTML 的哪个部分对应于网页上你感兴趣的信息。

11.5 用 BeutifulSoup 模块解析 HTML
11.5.1 从 HTML 创建一个 BeautifulSoup 对象
bs4.BeautifulSoup()函数返回一个 BeautifulSoup 对象。
11.5.2 用 select()方法寻找元素
方法:BeautifulSoup 对象
select()
select()方法将返回一个 Tag 对象的列表。
方法:Tag 对象
getText()
attrs
Tag 值可以传递给 str()函数,显示它们代表的 HTML 标签。
11.5.3 通过元素的属性获取数据
方法:Tag 对象
get()

11.8 用 selenium 模块控制浏览器
selenium 模块让 Python 直接控制浏览器,实际点击链接,填写登录信息,几乎就像是有一个人类用户在与页面交互。
1.8.1 启动 selenium 控制的浏览器
from selenium import webdriver
webdriver.Firefox()
11.8.2 在页面中寻找元素
11.8.3 点击页面
11.8.4 填写并提交表单
11.8.5 发送特殊键
from selenium.webdriver.commom,keys import Keys
11.8.6 点击浏览器按钮
11.8.7 关于 selenium 的更多信息
参考文档:http://selenium-python.readthedocs.org/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。