来源:python编程快速上手——Al Sweigart

webbrowser:是 Python 自带的,打开浏览器获取指定页面。

requests:从因特网上下载文件和网页。

Beautiful Soup:解析 HTML,即网页编写的格式。

selenium:启动并控制一个 Web 浏览器。 selenium 能够填写表单,并模拟鼠标在这个浏览器中点击。

1 利用 Webbrowser 模块

webbrowser 模块的 open()函数可以启动一个新浏览器,打开指定的 URL。 Web 浏览器的选项卡将打开 URL http://inventwithpython.com/。这大概就是webbrowser 模块能做的唯一的事情。

建立以下程序:

• 从 sys.argv 读取命令行参数。
• 读取剪贴板内容。
• 调用 webbrowser.open()函数打开外部浏览器

  1. import webbrowser, sys, pyperclip
  2. if len(sys.argv) > :
  3. # Get address from command line.
  4. address = ' '.join(sys.argv[:])
  5. else:
  6. # Get address from clipboard.
  7. address = pyperclip.paste()
  8. webbrowser.open('https://www.google.com/maps/place/' + address)

2 利用 Requests 模块

requests.get()函数接受一个要下载的 URL 字符串。通过在 requests.get()的返回值上调用 type(),你可以看到它返回一个 Response 对象,其中包含了 Web 服务器对你的请求做出的响应。

  1. >>>import requests
  2. >>>res = requests.get('http://www.gutenberg.org/cache/epub/1112/pg1112.txt')
  3. >>>type(res)
  4. <class 'requests.models.Response'>
  5. >>>res.status_code == requests.codes.ok
  6. True
  7. >>> len(res.text)
  8.  
  9. >>> print(res.text[:])
  10. The Project Gutenberg EBook of Romeo and Juliet, by William Shakespeare
  11.  
  12. This eBook is for the use of anyone anywhere at no cost and with
  13. almost no restrictions whatsoever. You may copy it, give it away or
  14. re-use it under the terms of the Proje

Response 对象有一个 status_code 属性,可以检查它是否等于requests.codes.ok,了解下载是否成功。检查成功有一种简单的方法,就是在 Response对象上调用 raise_for_status()方法。如果下载文件出错,这将抛出异常。如果下载成功,就什么也不做。

保存文件:

1.调用 requests.get()下载该文件。
2.用'wb'调用 open(),以写二进制的方式打开一个新文件。
3.利用 Respose 对象的 iter_content()方法做循环。
4.在每次迭代中调用 write(),将内容写入该文件。
5.调用 close()关闭该文件。

3 利用 BeautifulSoup 模块

BeautifulSoup是一个模块,用于从HTML页面中提取信息(用于这个目的时,它比正则表达式好很多)。 BeautifulSoup模块的名称是bs4(表示 BeautifulSoup,第4版)。

创建对象:

利用 requests.get()函数

  1. >>> import requests, bs4
  2. >>> res = requests.get('http://nostarch.com')
  3. >>> res.raise_for_status()
  4. >>> noStarchSoup = bs4.BeautifulSoup(res.text)
  5. >>> type(noStarchSoup)
  6. <class 'bs4.BeautifulSoup'>

传递一个 File 对象

  1. >>> exampleFile = open('example.html')
  2. >>> exampleSoup = bs4.BeautifulSoup(exampleFile)
  3. >>> type(exampleSoup)
  4. <class 'bs4.BeautifulSoup'>

用 select()方法寻找元素

传递给 select()方法的选择器 将匹配…
soup.select('div') 所有名为<div>的元素
soup.select('#author') 带有 id 属性为 author 的元素
soup.select('.notice') 所有使用 CSS class 属性名为 notice 的元素
soup.select('div span') 所有在<div>元素之内的<span>元素
soup.select('div > span') 所有直接在<div>元素之内的<span>元素, 中间没有其他元素
soup.select('input[name]') 所有名为<input>,并有一个 name 属性,其值无所谓的元素
soup.select('input[type="button"]') 所有名为<input>,并有一个 type 属性,其值为 button 的元素

Ex:

  1. #!example.html
    <!-- This is the example.html example file. -->
  2. <html><head><title>The Website Title</title></head>
  3. <body>
  4. <p>Download my <strong>Python</strong> book from <a href="http://
  5. inventwithpython.com">my website</a>.</p>
  6. <p class="slogan">Learn Python the easy way!</p>
  7. <p>By <span id="author">Al Sweigart</span></p>
  8. </body></html>
  1. >>> import bs4
  2. >>> exampleFile = open('example.html')
  3. >>> exampleSoup = bs4.BeautifulSoup(exampleFile.read())
  4. >>> elems = exampleSoup.select('#author')
  5. >>> type(elems)
  6. <class 'list'>
  7. >>> len(elems)
  8.  
  9. >>> type(elems[])
  10. <class 'bs4.element.Tag'>
  11. >>> elems[].getText()
  12. 'Al Sweigart'
  13. >>> str(elems[])
  14. '<span id="author">Al Sweigart</span>'
  15. >>> elems[].attrs
  16. {'id': 'author'}

通过元素的属性获取数据

  1. >>> import bs4
  2. >>> soup = bs4.BeautifulSoup(open('example.html'))
  3. >>> spanElem = soup.select('span')[]
  4. >>> str(spanElem)
  5. '<span id="author">Al Sweigart</span>'
  6. >>> spanElem.get('id')
  7. 'author'
  8. >>> spanElem.get('some_nonexistent_addr') == None
  9. True
  10. >>> spanElem.attrs
  11. {'id': 'author'}

从Web抓取信息的更多相关文章

  1. 从Web抓取信息的几个常用方法

    1.Response 对象有一个 status_code 属性,可以检查它是否等于requests.codes.ok. 2.raise_for_status()方法是一种很好的方式,确保程序在下载失败 ...

  2. 如何用 Python 实现 Web 抓取?

    [编者按]本文作者为 Blog Bowl 联合创始人 Shaumik Daityari,主要介绍 Web 抓取技术的基本实现原理和方法.文章系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正 ...

  3. python Web抓取(一)[没写完]

    需要的模块: python web抓取通过: webbrowser:是python自带的,打开浏览器获取指定页面 requests:从因特网上下载文件和网页 Beautiful Soup:解析HTML ...

  4. php多线程抓取信息测试例子

    php多线程抓取信息测试例子 PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程.多线程在处理重复性的循环任务,能够大大缩短程序执行时间. PHP扩展下载:htt ...

  5. java练习题(字符串类):显示4位验证码、输出年月日、从XML中抓取信息

    1.显示4位验证码 注:大小写字母.数字混合 public static void main(String[] args) { String s="abcdefghijklmnopqrstu ...

  6. python自动化之web抓取

    ''' 从web抓取数据: webbrowser:是python自带的,打开浏览器获取指定页面. requests:从因特网上下载文件和网页. Beautiful Soup:解析HTML,即网页编写的 ...

  7. 调用 CURL 使用正则抓取信息

    Class MyCurl{  protected $_pdo;     //构造方法 链接数据库  public function __construct(){      $this->_pdo ...

  8. 网页抓取信息(php正則表達式、php操作excel)

    1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我 ...

  9. java做web抓取

    就像许多现代科技一样,从网站提取信息这一功能也有多个框架可以选择.最流行的有JSoup.HTMLUnit和Selenium WebDriver.我们这篇文章讨论JSoup.JSoup是个开源项目,提供 ...

随机推荐

  1. 【洛谷】【动态规划/背包】P1417 烹调方案

    由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填 ...

  2. django CBV模式下如何去掉csrf验证

    方式一:from django.views.decorators.csrf import csrf_exemptfrom django.utils.decorators import method_d ...

  3. Day1 Mybatis初识(一)

    框架 将重复的,繁琐的代码实现封装,让程序员将更多的精力放在业务的理解和分析上. 框架的作用 提高开发效率 隐藏细节 三大框架SSH  -->   SSM 1)        表述层:   用户 ...

  4. programming-languages学习笔记--第9部分

    programming-languages学习笔记–第9部分 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src ...

  5. 《信息安全技术》实验一 PGP的原理与使用

    <信息安全技术>实验一 PGP的原理与使用(macOS High Sierra下实现) 实验目的 理解传统加密.公钥加密.混合加密.数字签名等概念 理解公钥.私钥.会话密钥.对称密钥等概念 ...

  6. vmvare安装系统提示vmci.sys 版本不正确解决方法

    无法获取vmci驱动程序版本:参数不正确解决 无法获取vmci驱动程序版本:参数不正确. 驱动程序vmci.sys版本不正确. 解决办法: 1,创建好虚拟机之后,别打开电源,然后到建好的虚拟机文件夹里 ...

  7. centos下Zabbix Agent端部署和安装

    首先重复一下前面的规划 server端:  192.168.136.144    centos6.5 (虚拟机) agent端:    192.168.136.155    centos6.5( 虚拟 ...

  8. 你都用python来做什么?

    首页发现话题   提问     你都用 Python 来做什么? 关注问题写回答     编程语言 Python 编程 Python 入门 Python 开发 你都用 Python 来做什么? 发现很 ...

  9. #leetcode刷题之路50-Pow(x, n)

    实现 pow(x, n) ,即计算 x 的 n 次幂函数.示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100 #inclu ...

  10. DML-插入

    插入的方式一: 语法: insert into 表名(字段)values(值); 特点: 1.要求表明括号里的属性和values括号里的属性一致或兼容 2.字段的个数和顺序不一定与原始表中的字段个数和 ...