您的位置:首页 > 编程语言 > Python开发

python的web抓取技术

2016-10-26 20:25 363 查看
1.利用webbrowser模块。

   利用webbrowser模块的open()函数可以启动一个新的浏览器,打开指定URL。

import webbrowser
webbrowser.open('http://baidu.com')


2.用requests模块从web下载文件

   requests模块可以帮助我们从web上下载文件,当然由于requests不是自带的模块,所以在使用前必须用

pip install requests


安装requests的模块。

import requests
result=requests.get('http://www.gutenberg.org/cache/epub/1112/pg1112.txt')
result.raise_for_status()


这样会返回一个Response对象。下载好的文件页面会保存在result.text里面;result还有一个status_code属性,可以检查是否等于requests.codes.ok,检查下载是否成功。

或者是在Response对象上调用raise_for_status()方法。如果下载失败,将抛出异常,否则就什么都不做。

3.将下载好的web页面保存在硬盘上。

 

可以使用传统的open() write()方法将web页面保存在硬盘上的一个文件,但是必须要以“写二进制”的模式即‘wb’模式打开文件,即使写入的文件是一个文本文件。

为了将web页面写入一个文件,可以使用for循环和Response对象的iter_content()方法

import requests
result=requests.get('http://www.gutenberg.org/cache/epub/1112/pg1112.txt')
result.raise_for_status()File = open('pg.txt','wb')
for chunk in result.iter_content(100000):
File.write(chunk)
File.close()


这样可以制定一段包含多少字节,一段一段地写入新文件。

4.用beautifulsoup解析页面

beautifulsoup的任务就是解析html代码中的各种标签。

<span style="font-size:18px;">import bs4,requests
res=requests.get('http://baidu.com')
res.raise_for_status()
Soup=bs4.BeautifulSoup(res.text,'lxml')
</span>


这样Soup就成为一个BeautifulSoup对象,而且是以lxml的方式解析的。

解析完要做的工作就是用select()方法寻找元素。

以下显示了常用的一些css选择器的例子:

传递给select()方法的选择器:                                                                将匹配:

soup.select('div')                                                                                        所有名为<div>的元素

soup.select('#name')                                                                                带有id属性为name的元素

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[name="hello"]')                                                         所有名为<input>并有一个name属性且值为hello的元素

 

select()函数将会返回一个标签的集合,这是BeautifulSoup表示一个HTML元素的方式。针对每一次的成功匹配都有一个标签对象与之对应。

标签值有attrs属性,将该标签的所有html属性作为一个字典。

标签对象的get()方法可以让我们很容易从元素中获取属性值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python web