什么是异步加载(ajax)、同步加载、延迟加载?

同步加载:
 同步模式又称阻塞模式,会阻止浏览器的后续处理,停止了后续的文件的解析,执行,如图像的渲染。流览器之所以会采用同步模式,是因为加载的js文件中有对dom的操作,重定向,输出document等默认行为,所以同步才是最安全的。通常会把要加载的js放到body结束标签之前,使得js可在页面最后加载,尽量减少阻塞页面的渲染。这样可以先让页面显示出来

异步加载:
异步加载也叫非阻塞模式加载,浏览器在下载js的同时,同时还会执行后续的页面处理。
在script标签内,用js创建一个script元素并插入到document中,这种就是异步加载js文件了。同步加载流程是瀑布模型,异步加载流程是并发模型

延迟加载:
有些 js 代码并不是页面初始化的时候就立刻需要的,而稍后的某些情况才需要的。延迟加载就是一开始并不加载这些暂时不用的js,而是在需要的时候或稍后再通过js 的控制来异步加载。
也就是将 js 切分成许多模块,页面初始化时只加载需要立即执行的 js ,然后其它 js 的加载延迟到第一次需要用到的时候再加载。
特别是页面有大量不同的模块组成,很多可能暂时不用或根本就没用到。
就像图片的延迟加载,在图片出现在可视区域内时(在滚动条下拉)才加载显示图片

什么是json?

json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。
类似于:国际通用语言-英语,中国56个民族不同地区的通用语言-普通话

知道了什么是异步加载,什么是json,我们用一个爬虫来看看具体的实现。

目标地址:https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=0

使用异步加载的代表网站有豆瓣,今日头条等。我们用豆瓣举例。

首先我们打开抓包工具,发现我们要找的的数据在页面源代码中是没有的。

那json数据到底在哪里?如果我们拿不到我们想要的数据,就无法完成数据抓取工作。

找到json数据步骤

拿到json数据后我们拿到浏览器json解析工具看看数据的格式和特点
要爬取多个页面,就要分析链接地址的区别在哪里
可以很清楚的看到这里的区别只有最后的start不一样,也就是说每一页在上一条的基础上都增加了20条数据。

最后附上代码,每行代码都注释的很清楚了。只需要改UA参数和数据库参数就能直接运行。

import requests
import json
import pymysql
#数据解析
allMovelist=[]#保存所有影视信息
currenPage=1#默认页面等于1
def parse():global currenPage#这个currenPage是局部变量url="https://movie.douban.com/j/new_search_subjects?start=0"headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"}conn = pymysql.connect(host="localhost", db="test", user="root", passwd="123456")cur = conn.cursor()for p in range(1,21):#遍历1,21页的数据,你还可以改的更多,我也不知道有多少页url = "https://movie.douban.com/j/new_search_subjects?start=%d" % (p * 20)# 拿到json数据html_json = requests.get(url=url, headers=headers).text# 转换为json文本json_text = html_json# 转换为字典move_dict = json.loads(json_text)# 判断数据是否为空,如果为空直接返回if len(move_dict["data"]) == 0:return# 保存信息到字典for one_move in move_dict["data"]:print(one_move)# 获取电影名称title = one_move["title"]# 获取导演directors = one_move["directors"]directors = ",".join(directors)#这一步是因为可能多个导演,将他们的名字用逗号隔开,下同# 获取演员casts = one_move["casts"]casts = ",".join(casts)# 获取评分rate = (one_move["rate"])# 一部电影信息oneMovelist = [title, directors, casts, rate]allMovelist.append(oneMovelist)#将每部电影信息添加到所有信息列表里,注意上边定义的空列表sql = "insert into actor(title,directors,casts,rate)values ('" + title + "','" + directors + "','" + casts + "','" + str(rate) + "')"cur.execute(sql)conn.commit()#提交数据conn.close()#关闭游标
# 主函数
if __name__ == '__main__':parse()#调用函数print(allMovelist)

新手博主,请前辈批评指正——丁一

爬虫实例7 爬取豆瓣电影数据 (json+ajax)相关推荐

  1. python实现爬虫探探_全栈 - 9 实战 爬取豆瓣电影数据

    这是全栈数据工程师养成攻略系列教程的第九期:9 实战 爬取豆瓣电影数据. 掌握了爬虫的基本原理和代码实现,现在让我们通过实战项目巩固一下. 确定目标 在写爬虫之前应当想清楚:我需要哪方面的数据?需要包 ...

  2. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  3. Java爬取豆瓣电影数据

    所用到的技术有Jsoup,HttpClient. Jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CS ...

  4. python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  5. Python爬虫实战 | (3) 爬取豆瓣电影Top250

    在本篇博客中,我们将使用requests+正则表达式来爬取豆瓣电影TOP250电影榜单,获取每部电影的序号.片名.导演.编剧.主演.类型.制作国家/地区.语言.上映日期.片长.又名.豆瓣评分和剧情简介 ...

  6. python爬虫,Scrapy爬取豆瓣电影《芳华》电影短评,分词生成词云图。

    项目github地址:https://github.com/kocor01/scrapy_cloud Python版本为3.6 自己写的简单架构<python爬虫,爬取豆瓣电影<芳华> ...

  7. python爬取豆瓣影评_【python爬虫实战】爬取豆瓣影评数据

    概述: 爬取豆瓣影评数据步骤: 1.获取网页请求 2.解析获取的网页 3.提速数据 4.保存文件 源代码: # 1.导入需要的库 import urllib.request from bs4 impo ...

  8. 【爬虫实践】记一次Scrapy框架入门使用爬取豆瓣电影数据

    本次的学习分享主要是使用一次Scrapy框架,毕竟在很多次的时候,自己在提取一些或是需要实验数据的时候,数据量要求不大,很快便能通过简单的request等库进行调用,然后获取数据. 这次,则是想要使用 ...

  9. 爬虫实战:爬取豆瓣电影 Top-250 到 Excel 表格中

    最近在家无聊自学了python的一些基础知识.后来看到许多朋友都在写爬虫,自己感觉很有意思,也想试一下 >____< 其实本来我是想将数据爬取到excel之后再增加一些数据库操作,然后用f ...

  10. BeautifulSoup爬取豆瓣电影数据

    BeautifulSoup爬取豆瓣TOP250 豆瓣爬取地址 https://movie.douban.com/top250?format=text BeautifulSoup官网地址 https:/ ...

最新文章

  1. Linux Supervisor的安装与使用入门
  2. adc0832对光电二极管进行数据采集_实车采集的现场数据如何导入控制模型进行分析...
  3. ubuntu 16.04 多个python版本切换
  4. 代码规范之华为公司代码规范
  5. CentOS下禁止防火墙
  6. 网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门
  7. 14考研计算机考前,计算机专业考研考前终极预测试题.docx
  8. ^_-诚征BLOG友情连接
  9. Qt文档阅读笔记-QCompleter官方解析及实例
  10. VMware内虚拟机自适应及最大化窗口调整方式
  11. 倒数58天 -- 分治法 -- 使用循环求方程的一个解
  12. 如果华为自研的芯片无法给华为手机带来更高的性价比,那么华为自研芯片给消费者带来的意义是什么呢?
  13. 系统学习数字图像处理之彩色图像处理
  14. Centos7安装WPS
  15. 三角形外接圆圆心 算法 删改版
  16. Unable to establish SSL connection.
  17. 女神让我去修电脑,无数次戳中笑点
  18. android vcard解析代码,Android从Intent获取vCard数据
  19. apicloud缓存
  20. 遥感影像的“全色”与“多光谱”

热门文章

  1. 映射文件实现进程通信
  2. Opera Android将支持HTML5和Flash功能
  3. WINDOWS2003超级作用域
  4. 5.剑指Offer --- 优化时间和空间效率
  5. 26. 面向对象程序设计
  6. css中的外边距合并时垂直方向上的普通流相邻元素间
  7. DBLinq (MySQL exactly) Linq To MySql(转)
  8. django应用之corsheaders[跨域设置]
  9. 内置模块(time、random、hashlib、os)
  10. php-fpm性能优化