L5&L6&L7 电影词云图-豆瓣

L5& L6& L7 电影词云图-豆瓣

从豆瓣上爬取数据,完成电影词云图,共以下5步:

  1. 向网页发送请求,获取网页源代码;
  2. 解析源代码,提取想要的数据;
  3. 使用 jieba 模块将语句切分成词;
  4. 运用字典的知识进行词频统计;
  5. 将词语生成词云图。

1. 向网页发送请求,获取网页源代码;

1-1 查看目标文本所在位置

在 Google Chrome浏览器中复制粘贴下面的链接,先去看看网页内容
https://movie.douban.com/subject/2129039/comments?sort=new_score&status=P
打开网页后可以看到《飞屋环游记》这部电影的相关短评。

1-2 获取网页中的 HTML 代码

# TODO 使用import导入requests模块
import requests

# TODO 将豆瓣电影评论URL地址,赋值给变量url
url="https://movie.douban.com/subject/2129039/comments?sort=new_score&status=P"

# TODO 使用requests发起GET请求,赋值给response
response=requests.get(url)

# TODO 使用print输出response
print (response)

1-3 状态码418

返回一个状态码 418。
418 其实是一个愚人节玩笑,含义是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个 418 错误状态码,表示“我是一个茶壶”。
在这里,状态码 418 也意味着我们的爬虫被豆瓣“发现”了。

1-4 身份信息User-Agent

在进行 HTTP 请求的时候,除了请求指定的 url 信息之外,还会告诉服务端“我是谁”,“我支持哪些特性”。
这些信息就是 HTTP 请求头 ,其中声明“我是谁”的就是 HTTP 请求头部的 User-Agent 。
由于我们用的是 requests 发起的请求,而不是浏览器,所以我们需要伪装成 Chrome 浏览器。

# 使用import导入requests模块
import requests

# 从bs4中导入BeautifulSoup
from bs4 import BeautifulSoup

# 将URL地址赋值给变量url
url = "https://nocturne-spider.baicizhan.com/2020/08/07/1/"

# 将变量url传入requests.get(),赋值给r
r = requests.get(url)

# TODO 使用print()输出响应消息中的request.headers
print (r.request.headers)

1-5使用身份信息

请求头中的 User-Agent 用来表示产生请求时浏览器的类型。
查看使用响应消息.request.headers 输出的请求头中, User-Agent 的值为 python-requests ,说明此次请求是Python发出的并且能被服务器识别到。

# 使用import导入requests模块
import requests

# 从bs4中导入BeautifulSoup
from bs4 import BeautifulSoup

# 将URL地址赋值给变量url
url = "https://nocturne-spider.baicizhan.com/2020/08/07/1/"

# TODO 将User-Agent以字典键对形式赋值给headers
headers={
   "user-Agent":"JingJing"}

# TODO 将字典headers传递给headers参数,添加进requests.get()中,赋值给r
r=requests.get(url,headers=headers)

# TODO 使用print()输出响应消息中的request.headers
print (r.request.headers)

1-6 获取User-Agent

打开网页,右击-检查-network-(刷新网页)-name-headers-request headers-User-Agent。

1-7 设置请求头

我们用浏览器打开网页,就是浏览器对服务端发送的请求,刚刚查看的请求头就是浏览器的信息。
接下来,可以设置请求头信息,模拟成浏览器去访问网站。
复制浏览器的 User-Agent 的值,粘贴到代码中,以字典key-value的形式赋值给字典 headers。
在 requests.get() 中添加参数 headers,其参数值为字典 headers 。

# 使用import导入requests模块
import requests

# 将豆瓣电影评论URL地址,赋值给变量url
url = "https://movie.douban.com/subject/2129039/comments?sort=new_score&status=P"

# TODO 将User-Agent以字典键对形式赋值给headers
headers={
   "user-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}

# TODO 将字典headers传递给headers参数,添加进requests.get()中,赋值给response
response=requests.get(url,headers=headers)

# TODO 使用.text属性获取网页前1000个字符的内容,并赋值给html
html=response.text[:1000]

# TODO 使用print输出html
print (html)

2. 解析源代码,提取想要的数据;

2-1 给变量 soup赋值

# 使用import导入requests模块
import requests

# TODO 从bs4中导入BeautifulSoup
from bs4 import BeautifulSoup

# 将豆瓣电影评论URL地址,赋值给变量url
url = "https://movie.douban.com/subject/2129039/comments?sort=new_score&status=P"

# 将User-Agent以字典键对形式赋值给headers
headers = {
   "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}

# 将 url 和 headers参数,添加进requests.get()中,将字典headers传递headers参数,给赋值给response
response = requests.get(url, headers=headers)

# 将服务器响应内容转换为字符串形式,赋值给html
html = response.text

# TODO 使用BeautifulSoup()传入变量html和解析器lxml,赋值给soup
soup=BeautifulSoup(html,"lxml")

# TODO 使用print输出soup
print (soup) 

2-2 定位网页中待获取信息的位置

右击-检查-检查页面左上角箭头图表-(鼠标移动至待获取信息位置)-查看检查页面的响应位置

观察网页可以发现:
所有的评论都在 标签中,检索span标签在网页中出现了100多次,而显然,该页只有二十条评论。
也可以试试以

节点来定位,网页中p标签出现的次数也大于20。

短评所在的节点都是类似的它们都有一样的标签和属性。
在 HTML 中,span 标签的作用是用来组合文档中的行内元素。
class 属性的作用是用来给标签分类。class="short"也就代表着,这里标签的内容是短评。

在网页中属性需要使用

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值