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()

最新文章

  1. js拖拽效果实现
  2. centos7搭建自己的yum源
  3. 相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘springmvc’解决方法
  4. atitit.atitit.hb many2one relate hibernate 多对一关联配置..
  5. java防止脚本注入,通过拦截器实现
  6. Block作为property属性实现页面之间传值(代替Delegate代理与协议结合的方法)
  7. T-SQL Apply的用法
  8. jquery-ui 进度条
  9. 举例说明划分子网,路由器IP地址
  10. 金蝶KIS 13.0专业版破解方法破解安装流程 金蝶KIS 13.0专业版安装流程
  11. SQL Server解决死锁问题
  12. JQuery中文本框获取焦点
  13. 五毛的cocos2d-x学习笔记05-场景与场景动画,动作
  14. Mybatis之动态构建SQL语句
  15. calling c++ from golang with swig--windows dll (四)
  16. 【linux】之查看磁盘占用情况
  17. 再次认识void
  18. Git push 提交代码到远程global user.name错误解决办法
  19. 腾讯云Centos安装gitlab
  20. LOJ.6053.简单的函数(Min_25筛)

热门文章

  1. JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比
  2. ThreadPoolExecutor 线程池异常消失之刨根问底
  3. 从问题入手,深入了解JavaScript中原型与原型链
  4. Testing Beta Round (Unrated)
  5. A. Crazy Town
  6. Codeforces #620 div2 B
  7. typedef struct xxx xxx与struct xxx区别 &amp;&amp; “-&gt;”和“.”访问结构体变量
  8. Spring Cloud实战: 基于Spring Cloud Gateway + vue-element-admin 实现的RBAC权限管理系统,实现网关对RESTful接口方法权限和自定义Vue指令对按钮权限的细粒度控制
  9. leetcode 1 两数之和 hashmap
  10. 一些简单的SQL语句