网络爬虫八

mac2024-10-01  48

爬虫三大库

一、Requests库

Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库。

它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。一句话---Python实现的简单易用的HTTP库。

安装Requests

pip3 install requests

创建请求

通过requests库发出一个请求非常简单,首先我们先导入requests库:

import requests

result = requests.get('http://www.baidu.com/')

获取到了一个Response对象result,我们可以从这个对象中获得所有我们需要的所有信息。刚刚的栗子是使用的GET请求,接下来将使用requests库进行POST请求:result = requests.post('http://www.baidu.com/',data={key:value})

响应内容

二进制响应内容

JSON格式的响应内容,如果解码失败,result.json()将会引发异常

请求将自动解码来自服务器的内容。大多数unicode字符集都是无缝解码的。

二、BeautifulSoup库

beautifulSoup “美味的汤,绿色的浓汤”

一个灵活又方便的网页解析库,处理高效,支持多种解析器。 利用它就不用编写正则表达式也能方便的实现网页信息的抓取

标签选择器

在快速使用中我们添加如下代码: print(soup.title) print(type(soup.title)) print(soup.head) print(soup.p)

通过这种soup.标签名 我们就可以获得这个标签的内容 这里有个问题需要注意,通过这种方式获取标签,如果文档中有多个这样的标签,返回的结果是第一个标签的内容,如上面我们通过soup.p获取p标签,而文档中有多个p标签,但是只返回了第一个p标签内容

获取名称

当我们通过soup.title.name的时候就可以获得该title标签的名称,即title

获取属性

print(soup.p.attrs['name']) print(soup.p['name']) 上面两种方式都可以获取p标签的name属性值

获取内容

print(soup.p.string) 结果就可以获取第一个p标签的内容: The Dormouse's story

嵌套选择

我们直接可以通过下面嵌套的方式获取

print(soup.head.title.string)

子节点和子孙节点

contents的使用

三、Lxml库

 lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高

XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。(注意:36是指python版本号)

#pip安装 pip3 install lxml #wheel安装 #下载对应系统版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml pip3 install lxml-4.2.1-cp36-cp36m-win_amd64.whl

 

Xpath的使用规则

表达式描述nodename选取此节点的所有子节点/从当前节点选取直接子节点//从当前节点选取子孙节点.选取当前节点..选取当前节点的父节点@选取属性*通配符,选择所有元素节点与元素名@*选取所有属性[@attrib]选取具有给定属性的所有元素[@attrib='value']选取给定属性具有给定值的所有元素[tag]选取所有具有指定元素的直接子节点[tag='text']选取所有具有指定元素并且文本内容是text节点

 

最新回复(0)