爬虫百战穿山甲(五)pandas请求出战
情绪萎靡不振,并不想说话,咱直接看代码吧。
import requests from fake_useragent import UserAgent import pandas as pd #import requests_cache import json # https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=20 def get_url_json(url): ''' 使用requests.get方法 获取url中的json数据 :parameter url:网址https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=20 :returns 列表,包含电影数据 ''' res = requests.get(url, headers={ 'User-Agent': UserAgent().random}) if res.status_code == 200: return res.json()['data'] return [] import time def from_douban_to_jsonl(file_name): ''' 调用get_url_json方法获取数据,并且将数据存储到jsonl文件中 :parameter file_name:将要存储的文件名 ''' for i in range(0,200,20): url = 'http://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start='+str(i) print(url) movies = get_url_json(url) time.sleep(2) with open(file_name,'a+') as db: for movie in movies: db.write(json.dumps(movie)) db.write('\n') def manage_data(file_name): ''' 将数据从文件中读取,并对数据进行一波处理 :param file_name: 将要读取的文件名 :return: ''' df = pd.read_json(file_name,lines=True) # 读取jsonl文件 df.drop_duplicates(subset='id') # 数据去重 df = df.set_index('id') # 设置索引列,返回一个新的对象 df = df[['casts','cover','directors','rate','star','title','url']] # 选择要保存的列 # 使用apply方法按列处理演员和导演数据 df['main_cast'] = df['casts'].apply(lambda x:x[0] if len(x)>0 else '') df['director'] = df['directors'].apply(lambda x:x[0] if len(x)>0 else '') # 去掉列表中的‘[]’,转化为字符串 df['casts'] = df['casts'].apply(lambda x:','.join(x)) df['directors'] = df['casts'].apply(lambda x:','.join(x)) from_douban_to_jsonl('doubanmovie.jsonl') manage_data('doubanmovie.jsonl')
学到了啥,我觉得除了基本知识以外,最重要的一点就是代码文档吧。
以前从来没有写过这样的文档。
本文同步分享在 博客 “看,未来”(CSDN)。
如有侵权,请联系 [email protected] 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
网址:爬虫百战穿山甲(五)pandas请求出战 https://mxgxt.com/news/view/785901
相关内容
爬虫实战女人首度挑战不穿内衣爬山,却意外被困在一座无形的墙上…
比速度,Python爬虫还是八爪鱼?测评两款网络爬虫工具
《追我吧》陈伟霆黄景瑜挑战70米爬楼速降
八爪鱼和python爬虫哪个好
谭咏麟领衔香港明星足球队出战佛山“西甲”
涂山卡戴珊已提出参战请求,(受狮榴石榴 的启发)
穿山甲,能不能成为字节跳动的秘密武器?
音乐游戏《暴走甲虫VR》登陆STEAM VR
跟着贝爷野外求生!李彦宏姚明都应战了