爬取豆瓣短影评(发布城市,加入时间,点赞人数,用户名,评分,发布时间,短评)

您所在的位置:网站首页 python爬取豆瓣读书短评 爬取豆瓣短影评(发布城市,加入时间,点赞人数,用户名,评分,发布时间,短评)

爬取豆瓣短影评(发布城市,加入时间,点赞人数,用户名,评分,发布时间,短评)

#爬取豆瓣短影评(发布城市,加入时间,点赞人数,用户名,评分,发布时间,短评)| 来源: 网络整理| 查看: 265

由于本人爬取豆瓣影评的时候,我想爬取的比较完善,因为我看大多都是爬取短评而已,本人想爬取其他内容所以写下这篇,希望对大家有帮助。 一、pip对库的调用 下载命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple +库名 需要安装的库有 re,requests 内建库(time,random) 图: 在这里插入图片描述

二、确认网站是什么类型 判断网页时动态的还是静态的可以点击右键,查看网页源代码,在这里插入图片描述 复制“西楼尘”三个字在网页源代码中,具体方法时ctrl+f在这里插入图片描述 搜索,如果在网页源代码有内容提示的话(高亮题目) 在这里插入图片描述

基本就是可以确定时静态的(可以多复制其他内容实验一下)。通过这里可以知道该网站时静态的。 三、查询数据来源 我搜索的是“寄生兽”所以网址:https://movie.douban.com/subject/27010768/comments?start=0;limit=20;sort=new_score;status=P 在这里插入图片描述 可以看到有五个数据是我们想要的,然后打开网页源代码 在这里插入图片描述 通过re匹配抓取到 点赞人数,用户名,评分,发布时间,短评 但这个网页还需要抓取到 发布城市,加入时间也可以通过re正则爬取到。 在这里插入图片描述 点击链接,打开 找到想抓去内容在这里插入图片描述 7个数据就可以抓取下来了。 四、代码部分`

import re import requests import time import random def get_url(url): headers={ "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36', "Cookie":'你的cookie' #尝试过很多用反爬手段这种是最简单的反爬了 } try: html=requests.get(url,headers=headers) html.raise_for_status() text=html.text return text except: print("爬取失败") #1.点赞人数,2.用户名,3.评分,4.时间,5.短评 def prase_url(url): text=get_url(url) content = re.compile(r'.*? (.*?).*?.*?' r' .*?.*? ' r'(.*?)',re.S) results = re.findall(content, text) for i in results: yield i #1、发布城市 2、加入时间 def get_newurl(url): text = get_url(url) content = re.compile('.*?',re.S) results = re.findall(content, text) for new_url in results: new_text=get_url(new_url) new_content = re.compile('.*?(.*?).*?.*?(.*?)', re.S) new_results = re.findall(new_content, new_text) for i in new_results: yield i def main(): for i in range(0,25): print("正在爬取第{}页".format(i+1)) url="https://movie.douban.com/subject/27010768/comments?start="+str(i*20)+"&limit=20&sort=new_score&status=P" for i,s in zip(get_newurl(url),prase_url(url)): with open('job.csv', 'a+', encoding='gb18030') as fh: # 处理避免读取歧义 fh.write(i[0].replace(',','、') + "," + i[1] + "," + s[0]+ "," + s[1] + "," + s[2] + ',' + s[3] +','+s[4]+ "\n") time.sleep(random.random()) print(i,s) if __name__=="__main__": main()

注:编码格式方面建议不要用utf-8-sig因为出现乱码,cookie要用你本人的 需要在.py文件下新建job.csv文件,此时可查询并分析 爬取发布城市,加入时间会挺久的,因为是从一个网页到另一个网页,如果有更好的方法,可以私聊谈一下 这是本人第一次写的代码可能不太好,有什么可以私信我



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3