1.爬取豆瓣top250电影信息

- 第一页: https://movie.douban.com/top250?start=0&filter=

- 第二页: https://movie.douban.com/top250?start=25&filter=

- 第三页: https://movie.douban.com/top250?start=50&filter=

- 第十页: https://movie.douban.com/top250?start=225&filter=

2.-爬取步骤:

- 1) 获取所有电影的主页url

- 2) 往每一个主页发送请求,获取响应数据

- 3) 解析并提取想要的数据(获取每一部电影的class为item的div)

- 4) 根据每一部电影的div提取电影的: 详情页url、电影名字、电影评分、评价人数

3.解析html数据

"""
re.findall('正则匹配规则', '匹配文本', '匹配模式') re.findall(
'<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价',
response.text, re.S) - html:
<div class="item">.*?<a href="https://movie.douban.com/subject/1293908/">
.*?
<span class="title">城市之光</span>.*?<span class="rating_num" property="v:average">(.*?)</span>
.*?
<span>(.*?)人评价
"""

import requests
import re headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 chrome-extension'
} # 1.发送请求
def get_html(url):
response = requests.get(url,headers=headers)
return response # 2.解析数据
def parse_html(response):
movie_list = re.findall(
'<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*? <span class="rating_num" .*?>(.*?)</span>.*? <span>(.*?)人评价',
response.text,
re.S)
return movie_list # 3.保存数据
def save_data(movie_data, num):
url, name, grade, count = movie_data
movie = f"""
电影排名: {num}
电影详情: {url}
电影名字: {name}
电影评分: {grade}
评分人数: {count}
"""
print(movie) with open('douban.txt','a', encoding='utf-8') as f:
f.write(movie) if __name__ == '__main__':
number = 0
num = 1
for i in range(10):
url = f'https://movie.douban.com/top250?start={number}&filter='
number += 25
response = get_html(url)
movie_list = parse_html(response)
for movie in movie_list:
save_data(movie, num)
num += 1

最新文章

  1. [POJ3468] A Simple Problem with Integers (Treap)
  2. 去除IE6浏览器下获得焦点的元素的虚线框的两个小办法
  3. CentOS6.5上编译OpenJDK7源码
  4. JS实现打字机式字符输出效果
  5. VC 各种情况下的窗口句柄的获取
  6. Windows 环境下基于 nginx 的本地 PyPI 源
  7. 面试题:实现LRUCache::Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法
  8. HDOJ 2055 An easy problem
  9. Hibernate 性能优化之抓取策略
  10. W3C词汇和术语表
  11. css margin重叠
  12. Android实现渐显按钮的左右滑动效果
  13. HelloGitHub.com 网站开源了
  14. 深入理解计算机系统_3e 第七章家庭作业 CS:APP3e chapter 7 homework
  15. Bootstrap 栅格系统简单整理
  16. Java一次读取文本文件所有内容
  17. VMware下Debian开发环境部署之常见问题记录
  18. python3.6.3安装步骤,适用linux centos系统
  19. java如何调用对方http接口(II)
  20. javabean的特点

热门文章

  1. C#面向对象基础 —— 类与对象
  2. 阿里云oss上传图片报错,The OSS Access Key Id you provided does not exist in our records.解决方法
  3. docker oracle install
  4. Hadoop入门进阶步步高(三)-配置Hadoop
  5. 项目中容易出现的BUG预警
  6. Project Euler Problem 23-Non-abundant sums
  7. vue 组件评论 的同时进行刷新
  8. SpringData Jpa、Hibernate、Jpa 三者之间的关系
  9. Native memory allocation (mmap) failed to map xxx bytes for committing reserved memory
  10. Vue2.0做的项目在IE下面打开一片空白?