python爬虫之JS动态渲染数据抓取
一、环境准备
-
requests:发出请求
-
pandas:保存数据到 csv文件
-
依赖安装命令:
powershellpip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
二、爬取思路
- JS动态渲染的数据是前后端分离的, 直接通过地址无法获取到具体的数据, 需要找到数据返回的api, 然后通过requests请求api拿到数据(一般为json数据), 最后进行解析获取想要的内容
- 在浏览器开发者模式中, 选中 网络 -> Fetch/XHR, 找到api, 如下图所示:
- 分析这个json结构, 解析出需要的内容
三、代码示例
python
import requests
import pandas as pd
def request(url):
r = requests.get(url);
return r.json();
def parseJson(json_data):
movie_list = []
results = json_data['results']
for result in results:
movie_info = {'name': f"{result['name']} - {result['alias']}",
'categories': ','.join(result['categories']),
'location': ','.join(result['regions']),
'duration': result['minute'],
'release_date': result['published_at'],
'score': result['score']}
movie_list.append(movie_info)
return movie_list
def save(data):
df = pd.DataFrame(data);
# 设置表头
df.columns = ['电影名', '类型', '地域', '时长', '上映时间', '评分'];
df.to_csv("data_js.csv", index=False, encoding='utf-8-sig');
if __name__ == '__main__':
# 发出请求
jsonData = request('https://spa1.scrape.center/api/movie/?limit=10&offset=0')
print(f'获取jsonData成功..')
# 解析json
movie_list = parseJson(jsonData);
print('解析json成功..')
# 存储数据
save(movie_list)
print('写入文件成功...')
四、结果展示

