Python爬虫_豆瓣电视剧
2024-08-31 23:06:23
1 import requests
2 import json
3 import csv
4
5
6 class DoubantvSpider:
7 def __init__(self):
8 # self.proxies = {"http":"http://125.123.152.81:3000"}
9 self.url = "https://movie.douban.com/j/search_subjects?type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=rank&page_limit=20&page_start={}" # 手机模式下国产剧请求网址
10 self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"}
11
12 # 发送请求,获得json,转化为字典
13 def parse_url(self, url):
14 res = requests.get(url, headers=self.headers)
15 return json.loads(res.content.decode())
16
17 # 保存数据
18 def save(self, dic):
19 with open("doubantv.csv", "a", newline='', encoding="utf8") as f:
20 for data in dic["subjects"]:
21 writer = csv.writer(f, delimiter=',')
22 writer.writerow([data["rate"], data["title"], data["url"]])
23
24 # 实现主要逻辑
25 def run(self):
26 page_num = 0
27 while True:
28 # 构造url
29 url = self.url.format(page_num)
30 # 发送请求,获取响应
31 dic = self.parse_url(url)
32 # 因为动态加载,通过判断每页电视剧数量来确定是不是到了尾页
33 if len(dic["subjects"]) < 20:
34 break
35 self.save(dic)
36 page_num += 20
37 print("ok")
38
39
40 if __name__ == "__main__":
41 doubantv = DoubantvSpider()
42 doubantv.run()
最新文章
- js拖拽效果实现
- centos7搭建自己的yum源
- 相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘springmvc’解决方法
- atitit.atitit.hb many2one relate hibernate 多对一关联配置..
- java防止脚本注入,通过拦截器实现
- Block作为property属性实现页面之间传值(代替Delegate代理与协议结合的方法)
- T-SQL Apply的用法
- jquery-ui 进度条
- 举例说明划分子网,路由器IP地址
- 金蝶KIS 13.0专业版破解方法破解安装流程 金蝶KIS 13.0专业版安装流程
- SQL Server解决死锁问题
- JQuery中文本框获取焦点
- 五毛的cocos2d-x学习笔记05-场景与场景动画,动作
- Mybatis之动态构建SQL语句
- calling c++ from golang with swig--windows dll (四)
- 【linux】之查看磁盘占用情况
- 再次认识void
- Git push 提交代码到远程global user.name错误解决办法
- 腾讯云Centos安装gitlab
- LOJ.6053.简单的函数(Min_25筛)
热门文章
- JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比
- ThreadPoolExecutor 线程池异常消失之刨根问底
- 从问题入手,深入了解JavaScript中原型与原型链
- Testing Beta Round (Unrated)
- A. Crazy Town
- Codeforces #620 div2 B
- typedef struct xxx xxx与struct xxx区别 &;&; “->;”和“.”访问结构体变量
- Spring Cloud实战: 基于Spring Cloud Gateway + vue-element-admin 实现的RBAC权限管理系统,实现网关对RESTful接口方法权限和自定义Vue指令对按钮权限的细粒度控制
- leetcode 1 两数之和 hashmap
- 一些简单的SQL语句