系列文章目录

第一章 scrapy爬取起点中文网24小时热销榜单。

第二章 scrapy爬取苏州二手房交易信息。

第三章 scrapy爬取QQ音乐榜单歌曲及豆瓣电影信息。


目录

系列文章目录

前言

一、scrapy爬取QQ音乐榜单歌(JavaScript)

1.项目需求

2.项目分析

3.代码编写

二、scrapy爬取豆瓣电影信息

1.项目需求(Ajax)

2.项目分析

3.代码编写

总结


前言

这次要爬取的两个项目分别使用了JavaScript和Ajax。因为二者的语法很相似所以写到一片博客里面。也可以更方便的进行对比。

一、scrapy爬取QQ音乐榜单歌(JavaScript)

1.项目需求

目标网址:https://y.qq.com/n/yqq/toplist/4.html。

现要将榜单中的歌曲信息爬取下来,字段有:歌曲名称、唱片、歌手和时长。

2.项目分析

通过控制台分析发现,具体信息并不存储在静态html信息之中。

所以要去javascript中寻找相应的信息存储文件。

博主之前写代码时存储信息还在javascript,但现在已经被隐藏了,但是博主的爬虫还能正常运行,所有直接给大家把网址贴出来。正常情况应该大家在js文件中自己寻找。

https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?&topid=4

大家可以看到这个信息非常的凌乱根本无法直接提前信息,这个时候就需要用的json格式化,百度直接搜就可以,但博主还是吧网址贴出来。json在线格式化。

进入后将目标文件源代码粘贴进去,点击格式化校验。

仔细观察可以发现,json编码只有两种类型,类似于python的字典和列表,这样就可以和分析html静态页面一样进行数据抓取了。

我们所需要的信息都存在一个叫songlist的列表中,其中的每一个元素都是以字典的形式存在的。

3.代码编写

1.编写item(数据封装)

import scrapyclass QqmusicItem(scrapy.Item):song_name=scrapy.Field() #歌曲album_name = scrapy.Field() #唱片singer_name = scrapy.Field() #歌手interval = scrapy.Field() #时长

2.编写spider(数据抓取(核心代码))

from scrapy import Request
from scrapy.spiders import Spider
from ..items import QqmusicItem
import json #引入json库class MusicSpider(Spider):name = "music"passdef start_requests(self):url="https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?&topid=4"yield Request(url)def parse(self, response,):json_text=response.text #json格式化music_dict=json.loads(json_text) #加载json文件for one_music in music_dict["songlist"]:item=QqmusicItem()#获取歌曲名称item["song_name"]=one_music["data"]["songname"]#获取唱片item["album_name"] = one_music["data"]["albumname"]#获取歌手item["singer_name"] = one_music["data"]["singer"][0]["name"]#获取市场item["interval"] = one_music["data"]["interval"]yield item

3.编写settings(项目配置)

伪装浏览器,不遵循robots协议

4.start.py(代替命令行)

在爬虫项目文件夹下创建start.py。

运行之后生成csv文件。

二、scrapy爬取豆瓣电影信息(Ajax)

1.项目需求

将中国大陆的电影信息爬取下来,字段有:电影名称、导演、演员和评分。

目标url:https://movie.douban.com/tag/#/?sort=U&range=0,10&tags=电影,中国大陆

信息类型可根据需要自行修改。

2.项目分析

在控制台分析发现,信息是采用Ajax局部动态刷新技术实现的。

当我们将页面拉到最下方发现,需要手动获取新的内容。点击加载更多。

之后便出现了新的Ajax文件。

进行url分析。

https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=电影&start=0&countries=中国大陆

https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=电影&start=20&countries=中国大陆

对比发现只有start的属性值发生了变化而且是以20为单位进行递增。

所以只需要挨个访问相应的url进行数据抓取就可以了。

但是相应的文件内容也仍然很凌乱。

这里我们依旧使用json格式化。

这里依旧只有列表和字典两种形式。都存储在data中。依次抓取信息即可

3.代码编写

1.编写item(数据封装)

import scrapyclass DoubanItem(scrapy.Item):title = scrapy.Field() #电影名称dicectors = scrapy.Field()  # 导演casts = scrapy.Field()  # 演员rate = scrapy.Field()  # 评分

2.编写spider(数据抓取(核心代码))

#coding:utf-8from scrapy import Request
from scrapy.spiders import Spider
from ..items import DoubanItem
import json
import timeclass DoubanSpider(Spider):name = "movies"current_page=1 #起始页面def start_requests(self):url="https://movie.douban.com/j/new_search_subjects?tags=电影&start=0&countries=中国大陆"yield Request(url)passdef parse(self, response):item=DoubanItem()json_text=response.textmovie_dict=json.loads(json_text)if len(movie_dict["data"])==0:returnelse:for one_movie in movie_dict["data"]:#获取电影名称item["title"]=one_movie["title"]# 获取导演item["dicectors"] = one_movie["directors"]# 获取演员item["casts"] = one_movie["casts"]# 获取评分item["rate"] = one_movie["rate"]yield item#爬取更多next_url="https://movie.douban.com/j/new_search_subjects?tags=电影&start=%d&countries=中国大陆"%(self.current_page*20)self.current_page+=1time.sleep(1) #等待一秒,防止IP被封yield Request(url=next_url)

3.编写settings(项目配置)

伪装浏览器,不遵循robots协议

4.start.py(代替命令行)

在爬虫项目文件夹下创建start.py。生成scv文件。

运行项目会出现一个报错。

这是因为咱们只设置了项目的开始,并没有设置项目的结束,到最后访问不到新的Ajax就会出现这个错误但并不影响项目整个的效果。


总结

此次将javascript和Ajax放到了一起,主要是因为二者的访问方法和编码方法很类似,一次性讲解可以省很多时间。

scrapy爬取QQ音乐榜单歌曲及豆瓣电影信息。相关推荐

  1. python爬取千千音乐榜单_Python爬取QQ音乐榜单数据

    原博文 2020-08-09 12:56 − 1.爬取QQ音乐榜单数据并存入数据库(MySQL) 2.代码 import requests import json from bs4 import Be ...

  2. python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  3. python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  4. Python3运用requests包爬取QQ音乐指定歌手歌曲

    Python3应用requests包开发定向爬虫 最近学院给我们开设了Python+爬虫课程,请来了外面的公司的老师来给我们进行了为期10天的爬虫课程,实训的日子最近结束,我也有时间把我们平常写的拿来 ...

  5. 使用scrapy爬取qq音乐

    记录一下爬取qq音乐的过程 首先我们搜索一个歌手 如:周杰伦 就会得到周杰伦的歌曲列表 我们点击播放,在所有的请求中找到这个: 这个请求就是真正播放歌曲的请求,那我们看一下他的url http://1 ...

  6. scrapy爬取qq音乐

    url分析,拿到初始url(start_url) 要爬取的内容为qq音乐的排行榜中的歌曲,首先我们要分析url: 1.打开qq音乐的首页,点击排行榜,右键,检查(谷歌浏览器,其他浏览器各有不同,360 ...

  7. python批量爬取QQ音乐歌手的歌曲等信息

    import requests,openpyxl #导入模块 wb=openpyxl.Workbook() #创建工作薄 sheet=wb.active #获取工作薄的活动表 sheet.title= ...

  8. java爬取酷狗榜单歌曲信息并存入数据库

    这里只解析一下代码,所需工具jsoup.HttpClient httpCLient获取html后,用jsoup解析html,再用java来获取所需要的信息. 之前写的有点问题,今天改了一下.因为通过h ...

  9. 爬取QQ音乐中一首歌的相关信息及评论(破解反爬虫、多协程队列爬虫)

    刚写完这个实验作业,顺便来记录一下一些易错的地方: 目录 一.页面预览 二.其他信息 三.一些小细节 四.源码 项目框图: 一.页面预览 先从歌手页爬取到这首歌的相关信息,包括它歌曲.专辑的url.这 ...

最新文章

  1. 【Ionic+AngularJS 开发】之『个人日常管理』App(二)
  2. HipHop算法:利用微博互动关系挖掘社交圈
  3. Linux内核Crash分析
  4. (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)
  5. 【英语学习】【WOTD】muse 释义/词源/示例
  6. 我爱我家:旗下APP已全面兼容鸿蒙系统
  7. fusionjs 学习二 核心概念
  8. 数据结构(C语言版第二版)思维导图
  9. SpringBoot+Vue批量下载图片压缩包
  10. named_struct类型怎么用
  11. 机器学习模型评价指标(准确率、精度、召回率)
  12. 计算机桌面广告弹窗,电脑乱弹广告怎么办_怎么禁止桌面弹出广告
  13. win7系统64位下安装sql server2000时提示兼容性问题
  14. IDEA中@author 模板的设置
  15. phpunit 基境
  16. JS基础 day1 | JS介绍、变量常量、数据类型及转换
  17. Masonry自动布局详解五:比例(multipliedBy)
  18. Windows 无法连接到打印机.打印后台程序服务没有运行
  19. 计算机省二打字,巧用音频转文字,省去打字烦恼
  20. Idea在项目中新建项目

热门文章

  1. sql注释符注入防御_WAF的SQL注入绕过手段和防御技术
  2. idea配置jdk环境
  3. find命令——查找文件或目录
  4. 开始学习c语言喽!!!
  5. conda使用教程简写
  6. 基于STM32的智能抽油烟机系统与设计
  7. win10 设置java环境变量
  8. IDEA在当前类中查找方法快捷键
  9. 第三课 MC9S08DZ60之通用输出输入GPIO
  10. python语言高空坠球_高空坠球砸中婴儿,整栋楼要赔钱,若孩子还在,现在应上幼儿园了...