python爬虫教程第2节-信息提取

本节信息提取主要是介绍BeautifulSoup库

主要回答三个问题

BeautifulSoup库是干什么的、用于什么情况下、怎么用

1.BeautifulSoup 库是用于信息解析、提取的,比如从上节我们可以提取一个网页的内容了,但如何获取我想要的内容呢,这就要靠BS库了。

2.用于什么情况下:用在http页面内容下,即你已经有了一个http页面内容,已经通过requests库获取了页面内容下,要解析提取其中的内容了,就用它

3.怎么用:这是本节的主要内容

一、BeautifulSoup库

1.BeautifulSoup库是一个第三方库,由python语言编写,用于信息解析,包括解析html、xml等内容

其官方文档见链接(http://beautifulsoup.readthedocs.io/zh_CN/latest/)

或点击链接点击打开链接

2.BeautifulSoup库的安装用pip即可,同requests库的安装方法

3.BeautifulSoup库的功能

该库主要是解析、提取html等文档中的内容,其引用方式与requests库略有区别

from bs4 import BeautifulSoup

4.BeautifulSoup类的基本元素

5.BeautifulSoup库对内容的解析

以上节中requests库获得的内容为例,用BeauifulSoup库解析

上节通过requests库获得的内容如下:

有了这个内容后,我们要对其进行解析:代码如下:

import requests
from bs4 import BeautifulSoup

#首先用requests库获取网页内容
r=requests.get('http://www.baidu.com')
r.encoding=r.apparent_encoding
res=r.text

#用BS库解析网页内容
soup=BeautifulSoup(res,'html.parser')

#将内容输出
print(soup.prettify())

此处最后输出使用了prettify()方法,此方法可以将解析的内容格式化输出。如不用此方法,输出内容从结果看与r.text输出结果一致,其实背后完全不一样。r.text的内容非结构后,而soup的输出内容是BS类结构化内容,可以对其进行解析,提取需要的内容。

6.BS库对已获取的结构化内容的精确提取

信息提取用到的函数是最主要的是find_all()函数,用其可提取解析好的BS实例对象中的内容

find_all()的参数有(name,attrs,recursive,string,**kwarge),函数返回结果为列表

(1)name:用于查找标签名称的检索字符串

(2)attrs:用于查找属性值的检索字符串,并且能够对属性值进行标注

(3)recursive:用于判断是否检索子孙层级

(4)string:用于检索<>...</>中字符串区域内容的检索字符串

7.其使用方法的代码为

import requests
from bs4 import BeautifulSoup

#首先用requests库获取网页内容
r=requests.get('http://www.baidu.com')
r.encoding=r.apparent_encoding
res=r.text

#用BS库解析网页内容
soup=BeautifulSoup(res,'html.parser')

#标签名称检索,检索所有a标签
print('网页中所有a标签为:',soup.find_all('a'))

for tag in soup.find_all(True):
    print('网页中所有标签名字为:',tag.name)

#标注属性值id=cp的属性值检索   
print('所有id=cp的内容为:',soup.find_all(id='cp'))

#检索属性href
for link in soup.find_all('a'):
    print('a标签中超链接为:',link.get('href'))

#检索字符串
for string in soup.strings:
    print(string)

8.输出结果为

此处链接一个python函数repr():点击打开链接

 

二、robots协议

该协议全称为 Robots Exclusion Standard,机器人排除标准

从名称我们可以知道,这个协议是专门针对网络爬虫的,即用来规定哪些东西是网络爬虫不能做的

由于网络爬虫从网络获取的信息,因此涉及到知识产权的问题,所以使用网络爬虫要遵守该协议。同时该协议是建议性而非强制性,因此是以营利为目的的商业活动需特别注意,由于本人的博客教程不以营利为目的,以学习为目的,且访问方式与人操作相似,风险较小,但还是要特别尊重他人劳动成果,因此,在此特别声明,本人博客中涉及到的链接内容,产权归原作者所有,本人仅用于学习且不会用于任何商业行为,侵删。

下面言归正传,来继续说说robots协议

1.robots协议一般在网站的要目录下,比如百度的robots协议在http://www.baidu.com/robots.txt,送上链接点击打开链接

 

2.robots协议用法

user-agent:*,*代表所有,即对所有爬虫有效,有些网站对一些爬虫开放,比如百度对baiduspider开放,对其它限制

disallow:/,/代表根目录,即此目录下所有内容均不能访问

下面是baidu的robots协议部分截图,可以看出百度对baiduspider开放,但对baidu目录下的内容禁止爬虫爬取。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值