Python网络爬虫:爬取豆瓣上《小王子》书评

本文为南大《用Python玩转数据》学习笔记

用到的库或模块:
1.Requests第三方库
用于中小型网络爬虫的信息抓取。
基本方法:
requests.get() 请求获取指定YRL位置的资源,对应HTTP协议的GET方法
Requests官网:http://www.python-requests.org/
(可查看基本用法)
2.BeautifulSoup库
是一个可从HTML或XML文件中提取数据的Python库
官网:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
BeautifulSoup在进行解析时,对HTML最常用的解析器是LXML
3.re 正则表达式模块
用来检索替换符合某个规则或者是模块的文本。

1.在对某个网站进行爬虫之前,往往需要查看其爬虫协议,看是否允许爬虫。
查看豆瓣的爬虫协议:
在这里插入图片描述
可知所要抓取的subject目录下的东西并没有被禁止。
(该协议的延时Crawl-delay是5秒钟)

2.分析网页源码特征,编写代码

import requests
import re
from bs4 import BeautifulSoup

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
r=requests.get('https://book.douban.com/subject/1084336/comments/',headers=headers)
soup=BeautifulSoup(r.text,'lxml')
pattern=soup.find_all('span','short') #('标签','属性内容')
for item in pattern:
    print(item.string) #通过string属性获得字符串
pattern_s=re.compile('<span class="user-stars allstar(.*?)rating"') #通过compile()方法将字符串编译成pattern实例
p=re.findall(pattern_s,r.text) #使用正则表达式中的findall()函数匹配源代码中这样的模式
s=0
for star in p:
    s+=int(star)
print(s)

headers里的内容由此查看:
在这里插入图片描述
查看网页源码,可知所有的评论都有标签标记:
在这里插入图片描述
评论的分值则都有这样的标签:
在这里插入图片描述
部分运行结果:
在这里插入图片描述

附:
BeautifulSoup基本使用方法:
在这里插入图片描述
BeautifulSoup的对象有4种:
(1)Tag:HTML或LXML文档中的标签 (如图中黄框部分),最重要的属性包括name和attribute
(2)NavigableString:Tag中插入的字符串 (如图中椭圆部分)
(3)BeautifulSoup
(4)Comment:NavigableString的子类

本文代码只是对单个网页进行爬取,还可通过各个网页中的url特征来循环抓取多个网页,这样一个小型的爬虫就实现了。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值