首页 编程教程正文

爬取豆瓣华语电影

piaodoo 编程教程 2020-02-22 22:10:54 1170 0 python教程

本文来源吾爱破解论坛

本帖最后由 山野村夫-陈墨 于 2019-7-20 21:48 编辑

本来是要爬“吾爱破解”的,结果被反了。换了个目标,向豆瓣电影下手。
还是拿“软柿子“下手。


[Python] 纯文本查看 复制代码

'''
    豆瓣 华语 电影
    可见网站:
    https://movie.douban.com/explore#!type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start=0
    时间:2019年7月18日
'''
import  requests
import  json
from  lxml import etree

def  get_message(start_page):
    url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start={}".format(start_page)
    header ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36",
             "Upgrade-Insecure-Requests": "1",}
    response = requests.get(url,headers= header)
    html_str = response.text
    #得到的数据直接是json数据,所以直接处理
    str = json.loads(html_str)
    #返回列表数据
    return str["subjects"]

def  save(record):
    with open("国语电视剧.txt","w",encoding="utf-8") as f:
        for  i  in range(len(record)):
            f.write("\n"+str(i+1)+"、")
            f.write(str(record[i]))
            print(record[i])

    print("保存结束!")


if __name__ == "__main__":
     start_page = 0
     record=[]
     #网页start_page最大为 220
     while start_page<=220:
        #1.得到数据;
        channel_list = get_message(start_page)
        #2.追加数据;
        record.extend(channel_list)
        #extend把列表数据按照列表元素添加到列表中
        start_page+=20
     #3.简单处理:按照评分从高到底排序,sorted临时排序
     record = sorted(record,key=lambda keys:keys['rate'],reverse=True)
     #4.数据保存
     save(record)



关于上次的爬虫这次又加数据保存到“.csv”文件中,以及对数据的读取后的简单处理,
不想冲帖子数目,就补录吧
[Python] 纯文本查看 复制代码
'''
    豆瓣 华语 电影
    可见网站:
    https://movie.douban.com/explore#!type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start=0
    时间:2019年7月20日
    
'''
import  requests
import  json
import csv
import pandas as pd


def  get_message(start_page):
    url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start={}".format(start_page)
    header ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36",
             "Upgrade-Insecure-Requests": "1",}
    response = requests.get(url,headers= header)
    html_str = response.text
    #得到的数据直接是json数据,所以直接处理
    str = json.loads(html_str)
    #返回列表数据
    return str["subjects"]

def  save_csv(list):
    key_list = []
    for key  in list[0].keys():
        key_list.append(key)
    print(key_list)
    #在这儿注意 "newline",可以尝试一下有newline和没有newline的结果
    with open("豆瓣华语电影.csv","w",encoding="utf-8",newline="") as f:
        f_csv = csv.writer(f)
        #写标题
        f_csv.writerow(key_list)
        #读取列表中嵌套的字典的数据,一行一行写入csv数据
        for i in range(len(list)):
            #每次清空,不然和会重复
            value=[]
            for  j  in  range(len(key_list)):
                value.append( list[i][key_list[j]])
            print(value)
            f_csv.writerow(value)


def  save_txt(record):
    with open("国语电视剧.txt","w",encoding="utf-8") as f:
        for  i  in range(len(record)):
            f.write("\n"+str(i+1)+"、")
            f.write(str(record[i]))
            #print(record[i])

    print("保存结束!")

def choose():
    tmp_csv = pd.read_csv('豆瓣华语电影.csv', index_col=1)
    tmp_csv = tmp_csv[tmp_csv['rate'] > 6.0]
    tmp_csv.to_csv('豆瓣02_1.csv', sep=',')

if __name__ == "__main__":
     start_page = 0
     record=[]
     #网页start_page最大为 220
     while start_page<=220:
        #1.得到数据;
        channel_list = get_message(start_page)
        #2.追加数据;
        record.extend(channel_list)
        #extend把列表数据按照列表元素添加到列表中
        start_page+=20
     #3.简单处理:按照评分从高到底排序,sorted临时排序
     record = sorted(record,key=lambda keys:keys['rate'],reverse=True)
     #4.数据保存csv
     save_csv(record)
     #5.数据保存txt
     save_txt(record)
     #6.数据的简单的处理:选取评分大于6.0的电影
     choose()
    


版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7771.html

搜索