python爬虫小白入门教科书_Python:网络爬虫小白入门记录~

1.安装库:requests库、bs4库、lxml库

①requests库功能:对网页进行数据请求,采集网页的响应结果。

②BeautifulSoup库功能:解析网页内容,对标签(tag)进行定位,查找,内容提取等。

注意:BeautifulSoup库在安装时要安装bs4库。使用时,命令:

from bs4 import BeautifulSoup

③安装lxml库是因为BeautifulSoup()在对网页进行解析时,我们指定解析解析器为lxml时需要这个库的支持,当然,如果用BeautifulSoup默认的解析器也可以,就是速度会慢一点。

如果没有安装lxml库,而指定了lxml这个解析器,则会报错:

BeautifulSoup四大解析器利弊PK:

2.抓取目标网页,并写入本地文件

代码如下:

注释:get()方法中的headers参数用于设置爬虫的“头”,让爬虫机器模拟(伪装)成普通的浏览器。requests库响应的结果为response对象,该对象具有text方法,可以提取网页内容。

运行结果:

注释:200是status_code的返回值,表示成功抓取。400以上的数字表示客户端错误,示例:403 禁止访问。500以上的数字表示服务器端错误,示例:503 服务器不可用。

保存到本地的文件:

由上面的文件可以看出,我们需要提取的评论内容在……中。

3.提取评论文字,并保存到本地文件

注释:①BeautifulSoup库中markup参数用于指定提取的原始内容,features用于指定解析器对内容进行解析。②BeautifulSoup对象有find_all()方法,用于查找某个特定模式的内容,name参数用于指定标签名,attrs参数用于指定属性名,对应于html网页中的class。③对于findresult对象使用string方法可以提取出目标文本。④由于这里采用列表存储每个评论,但是write()函数不支持列表的写入,因此需要将列表转为字符串,转换方法是使用join()方法。

格式:'分隔符 '.join(列表名)

运行结果:以三根斜杠分隔不同的评论。

4.提取读者对《小王子》的评分

对比网页源代码和网页显示内容可以发现,当用户给5星好评时,代码内容为:

下面是“菱夏”这个读者评论内容对应的网页源代码:

为了提取每个读者对该书的打分,需要使用正则表达式库re,该库为Python安装时自带的库,import一下即可使用:

注释:①re库中的compile()函数创建模式对象,用于将模式进行打包,字符串中往往会使用正则表达式来进行模式描述。格式:compile(pattern )

(.*)在正则表达式中非常常见,表示匹配任意字符任意次数。

②re库中的finadall()函数用于在某个字符串中找到并返回符合某个特定格式要求的字符串,格式:findall(pattern, string,……)

pattern-->正则表达式

string-->需要处理的字符串

运行结果:

提取出了17个评分,但是,仔细的偶去网页上核对了一下,明明一页有20条评论啊,为什么只有17个打分呢?再仔细一看,确实有三位同学没有给这个书打分呢!

举个栗子~

上面折腾了一番也只是对一个静态网页进行数据提取,如果要进行自动翻页抓取下一页的内容,事情会更加复杂~

参考资料:用Python玩转数据_中国大学MOOC(慕课)​www.icourse163.org1760647db46a794b9a2bf609e7d2e5c4.pngBeautiful Soup 4.4.0 文档​www.crummy.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值