第11章:从web抓取信息


下面的几个模块,让在Python中抓取网页变得很容易:


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


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


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


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






11、2利用requests模块从web下载文件


requests.get()函数接受一个要下载的URL字符串,返回的是Response对象


通过Response对象的status_code属性,判断是否请求成功
Response.status_code == requests.codes.ok,True请求成功


另一种方法是在Response对象调用raise_for_status()方法,如果下载出错,将抛出异常,如果下载成功,就什么都不做


Response对象的text属性是下载的内容


11.3、利用BeautifulSoup模块解析HTML


一:
首先通过requests模块下载网页,
然后利用BeautifulSoup模块解析HTML


>>> import requests,bs4
>>> res =  requests.get('http://book.zongheng.com/chapter/457720/7629918.html')#下载主页,返回Response对象
>>> res.raise_for_status()#判断是否下载成功
>>> noStarchSoup = bs4.BeautifulSoup(res.text)#将Response对象的text属性传递给 bs4.BeautifulSoup(),将返回的BeautifulSoup对象存在变量中




二:
也可以像bs4.BeautifulSoup()传递一个File对象,从硬盘加载一个HTML文件


>>> exampleFile = open('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\fangdongzhuye.html','rb')#以rb模式打开文件
>>> exampleSoup = bs4.BeautifulSoup(exampleFile)
>>> type(exampleSoup)
<class 'bs4.BeautifulSoup'>


备注:::
open()函数打开方式:
  “r”开放阅读(默认)
  ' w '开放写作,首先删除文件
  “x”独家创造开放,失败如果文件已经存在
  “a”开放写作,附加文件的末尾,如果它的存在
  “b”二元模式
  “t”文本模式(默认)
  “+”打开磁盘文件更新(阅读和写作)






BeautifulSoup对象上调用select()方法查找指定元素,返回Tag对象的列表
>>> elems = noStarchSoup.select('div#chapterContent')
>>> type(elems)
<class 'list'>
>>> len(elems)
1
>>> elems[0].getText()#返回匹配的指定内容
>>> elems[0].attrs
{'id': 'chapterContent', 'class': ['content'], 'itemprop': 'acticleBody'}


Tag对象的get()方法很容易从元素中获取属性值

本文转载:CSDN博客