第三篇 - 爬取豆瓣电影网

环境:python 3.6  pycharm

模块:requests,json

一、将爬取到的内容存放到txt文件中

复制代码
 1 import requests
 2 import json
 3 
 4 #请求头
 5 headers = {
 6     'Accept' : '*/*',
 7     'Accept-Encoding' : 'gzip, deflate, br',
 8     'Connection' : 'keep-alive',
 9     'Host' : 'movie.douban.com',
10     'Referer' : 'https://movie.douban.com/typerank?type_name=%E6%88%98%E4%BA%89&type=22&interval_id=100:90&action=',
11     'User-Agent' : '',
12     'X-Requested-With' : 'XMLHttpRequest'
13 }
14 
15 def write_films(file_name):
16     '''将电影名+评分+url存入movie.txt文件中'''
17     num_list = [0,20,40,60,76]#动态页面,20为一页
18     index =1#获取电影的个数
19     with open(file_name,'w',encoding='utf-8') as f:
20         for num in num_list:
21             url_1 = 'https://movie.douban.com/j/chart/top_list?type=22&interval_id=100%3A90&action=&start='
22             url = url_1 + str(num) + '&limit=20'#每一页的url
23             response = requests.get(url=url,headers=headers)
24             r = response.text
25             response_list = json.loads(r)
26             for item in response_list:
27                 rating = eval(item.get('rating')[0])
28                 url = item.get('url')
29                 title = item.get('title')
30                 f.write(str(index)+':'+title+','+str(rating)+','+url+'\n')
31                 index += 1
32 
33 if __name__ == '__main__':
34     write_films('movie.txt')
复制代码

标红部分注意,user-agent对应的value,360极速浏览器的话,可以在地址栏输入about:version,回车,用户代理后面的一长串就是需要填入''里面的内容。

 

 

二、将爬取的内容存放到excel中

复制代码
#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File    : Operate_system_ModeView_structure -> play.py
@IDE     : PyCharm
@Author  : zihan
@Date    : 2020/4/23 20:16
@Desc    :爬虫 - 爬取豆瓣电影名等信息
================================================="""

import requests
import json
import pandas as pd


def doubanmovie():
    limit = 10
    url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&page_limit={}&page_start=0".format(limit)
    # 浏览器类型
    headers = {
        "User-Agent": ""
    }
    result = requests.get(url, headers=headers)
    json_result = result.text
    json_result = json.loads(json_result)
    col = ['title', 'rate', 'url']
    num = len(json_result['subjects'])

    # 确定一个数据类型,NaN代表非数值的特殊型
    data = pd.DataFrame(index=range(num), columns=col)
    for i in range(num):
        data.loc[i, 'title'] = json_result['subjects'][i]['title']
        data.loc[i, 'rate'] = json_result['subjects'][i]['rate']
        data.loc[i, 'url'] = json_result['subjects'][i]['url']
    filename = "电影排行.xlsx"
    data.to_excel(filename)


if __name__ == '__main__':
    doubanmovie()
复制代码

 

 

顺便说一下if __name__ == '__main__',简单的说就是用python解释器运行的时候,它是可以运行里面的代码的,如果是别的文件调用的话,那么后面的内容就不会执行。

另外,如果想要把程序打包成.exe可执行文件的话,需要用到pyinstaller。可以用pip install pyinstall下载。pyinstaller -F hello.py就可以得到一个hello.exe了。

需要说明的是,.exe在别的电脑上运行的时候对操作系统是由要求的,如果你的exe是在win10 64位的机子上打包,那么在win7 32位就不能运行。

posted @   o云淡风轻o  阅读(251)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示