如何爬取<a>标签内的title=""信息获得评论区的用户名?

来源:2-3 整合爬虫功能函数

weixin_慕设计1308382

2020-07-26 15:40:32

老师您好,我目前正在模仿您的案例爬取《肖生克的救赎》中用户名和对应的评论,目前不太清楚如何爬取到用户名信息

import requests
from bs4 import BeautifulSoup

# 获取豆瓣电影评论信息
headers = {'user-agent': 'my-app/0.0.1'}
# 《肖生克的救赎》短评链接
url = "https://movie.douban.com/subject/1292052/comments"
movie_comments = []
user_names = []
start = 0
max_start = 40

while start <= max_start:
    # 访问页面
    url = "https://movie.douban.com/subject/1292052/comments?start=" + str(start) + "&limit=20&sort=new_score&status=P"
    respons = requests.get(url=url, headers=headers)
    # print(respons.text)
    # 实现每个页面的抓取
    soup = BeautifulSoup(respons.text, 'html.parser')
    # print(soup.find_all(class_="hd"))
    for elements in soup.find_all(class_="comment-item"):
        print(elements.find(class_="short").string)
        print(elements.find(text="title="))
        movie_comments.append(elements.find(class_="short").string)
    # 修改start参数
    start += 20

# for name in movie_comments:
#     print(name)

分析网页结构后发现用户名在title标签内,但使用text=参数好像不起作用http://img.mukewang.com/climg/5f1d33310901fd0c20381312.jpg

写回答

2回答

DeltaF

2020-07-27

  1. print(elements.find('a')['title'])  # 获取用户名称,title是a标签里面的一个key

  2. 数据缺失问题,你每次for循环前sleep1-3秒,试一下

1

weixin_慕设计1308382

提问者

2020-07-26

目前另一个问题是数据丢失,使用上述代码连续爬取评论信息时,会发现部分评论没有获取,是需要通过sleep函数间隙爬取吗?

0
heltaF
h 如果sleep不行,看一下缺失的数据,有没有什么特性,直接浏览器比对看看。
h020-07-27
共1条回复

人人都能学的数据分析

从0开始学数据分析,未来互联网各岗位的标配技能,产品经理、运营经理、技术人员人人必备,人人必会的的实用技能

1402 学习 · 1133 问题

查看课程