python scrapy爬取全部豆瓣电影(可能是54万数据)
发布日期:2021-06-28 19:08:20 浏览次数:3 分类:技术文章

本文共 2548 字,大约阅读时间需要 8 分钟。

(一)爬取环境
  • win10
  • python3
  • scrapy
(二)豆瓣电影参考标准

主要参考来自神箭手的云市场

image.png

(三)爬取步骤

全部电影地址:

image.png

image.png

image.png
image.png

主要爬取的字段有:标题,得分,封面url,简介,全部评论

采用scrapy、ip代理池、ua次进行内容爬取

# -*- coding: utf-8 -*-# @Time    : 2018/7/22 14:45# @Author  : 蛇崽# @Email   : 643435675@QQ.com# @File    : doubanmoviespider.py(豆瓣电影)import jsonimport scrapyfrom bs4 import BeautifulSoupclass DouBanSpider(scrapy.Spider):    name = 'adouban_spider'    start_urls = ['https://movie.douban.com/tag/#/']    allowed_domains = ['movie.douban.com']    def parse(self,response):        for count in range(0,27002,20):            fir_url = 'https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start={}'.format(count)            yield scrapy.Request(                fir_url,                callback=self.parse_main            )    def parse_main(self,response):        infos = json.loads(response.body.decode('utf-8'))        '名称 封面图片 简介 评分 短评top100'        print(infos)        datas = infos['data']        for data in datas:            title = data['title'] # 名称            cover = data['cover'] # 封面图片            rate = data['rate']   # 评分            url = data['url'] # 详情url            id = str(data['id'])            if url:                print(title,cover,rate,url)                yield scrapy.Request(url,callback=self.parse_detail,meta={
'id':id}) def parse_detail(self,response): strid = response.meta['id'] base_url = 'https://movie.douban.com/subject/{}/comments?'.format(strid) # 全部评论的链接 b_url = 'https://movie.douban.com/subject/{}/comments?status=P'.format(strid) # 前一百条评论 n_url = 'https://movie.douban.com/subject/4920528/comments?start=0&limit=20&sort=new_score&status=P' for page in range(0,100,20): n_url = base_url+'start={}&limit=20&sort=new_score&status=P'.format(page) print('n_url################# ',n_url) if n_url: yield scrapy.Request(b_url,callback=self.parse_comment) soup = BeautifulSoup(response.body, 'lxml') # 简介(先隐藏后不隐藏的) try: abstract = soup.find('span', class_='all hidden').get_text() except: abstract = soup.find('span',attrs={
'property':'v:summary'}).get_text() pass # print('abstract -------- ',abstract) def parse_comment(self,response): soup = BeautifulSoup(response.body,'lxml') shorts = soup.find_all('span',class_='short') for short in shorts: print('short ============= ',short.get_text())

个人微信:hll643435675(备注:博客)

更多资源请访问:

欢迎光临我的小网站:

陆续优化中,后续会开发更多更好玩的有趣的小工具

转载地址:https://blog.csdn.net/xudailong_blog/article/details/81177437 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:centos7 安装jdk1.8
下一篇:python 爬取fcoin比特币交易市场 下文

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月07日 17时16分34秒