异步加载(Ajax)网页信息获取-以豆瓣电影为例
2018-12-21 11:21
363 查看
异步加载(Ajax)网页信息获取-以豆瓣电影为例
首先,对网页进行解析
import requests from bs4 import BeautifulSoup import json headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2714.400', 'X-Requested-With':'XMLHttpRequest', 'Host':'movie.douban.com', 'Referer':'https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action='} url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=' # 爬取某一页的函数, 返回 json 格式 def get_page(page): # 设置网页参数 params = {'start':page, 'limit':'20'} try: r = requests.get(url, params = params, headers = headers) r.raise_for_status() r.encoding = r.apparent_encoding # 获取网页json格式,r.json()返回列表形式 return r.json(), page # 返回元组形式 except: return '访问失败'
其次, 提取网页内容
# 获取页面信息 def parse_page(json): result = [] # 获取返回元组的第一个元素,即获取电影网页的json文本, 为列表形式 json0 = json[0] # 循环遍历每一个电影 for json in json0: # json 为字典形式 data = {'orders':json.get('rank'),'names':json.get('title'),'types':json.get('types'), 'actors':json.get('actors'),'scores' :json.get('score')} result.append(data) return result
最后,写入json文件, 获取前10页的电影信息
# 写入json 文件 def write_to_file(content): with open('猫眼动作电影.json','a', encoding = 'utf-8')as f: f.write(json.dumps(content, ensure_ascii = False) + '\n') # 获取前10页电影的信息 for i in range(0,10): json1 = get_page(i * 20) content = parse_page(json1) for item in content: print(item) write_to_file(item)
注:异步加载获取网页url 和headers的方式如下:
打开网页——右击——检查——NetWork——XHR——选择“Name”下的第一行,单击——在”Requests Headers“ 中找到“X-Requested-With”,若其内容为“XMLHttpRequest”,则该行为加载页——在“General”中找到“Request URL”(该网页就是我们所需的URL)——接着找headers头部需要修改的信息——点击“Preview”,在里面寻找所提取的信息
相关文章推荐
- 网络爬虫笔记【4】 掌握获取 Ajax 异步加载网页内容的方法
- ajax异步加载,爬取豆瓣电影排行榜,爬虫案例
- scrapy入门实战练习(三)----抓取AJAX异步加载网页
- 爬取了豆瓣11W+网页,获取了5W+有效书籍信息
- iOS 获取快递物流信息(GCD异步加载)
- 关于ajax异步获取服务器信息乱码情况
- Scrapy爬虫框架教程-- 抓取AJAX异步加载网页
- python3爬取豆瓣电影Ajax(获取动态内容)
- 利用js将ajax获取到的后台数据动态加载至网页中
- 一般方式和ajax方式从后台获取数据加载进网页
- ajax异步加载网页爬虫
- 爬虫实战【11】Python获取豆瓣热门电影信息
- 网页上通过ajax异步加载的数据有什么办法抓取到吗?
- 网页异步加载之AJAX理解
- 用来获取豆瓣网上电影信息的简介
- ajax 实现加载页面、删除、查看详细信息,以及bootstrap网页的美化
- R语言利用RSelenium包或者Rwebdriver模拟浏览器爬取异步加载等难爬取的网页信息
- Scrapy框架结合Spynner采集需进行js,ajax动态加载的网页并提取网页信息(以采集微信公众号文章列表为例)
- ajax实现异步加载页面,实现信息实时更新
- Ajax异步加载web网页数据