当前位置: 首页 > news >正文

【Python】从0开始写爬虫——转身扒豆瓣电影

豆瓣就比较符合这个“明人不说暗话”的原则。所以我们扒豆瓣,不多说,直接上代码

from scrapy import app
import re

header = {
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
    'Host': 'movie.douban.com',
    'Accept-Language': 'zh-CN,zh;q=0.9'
}

movie_url = "https://movie.douban.com/subject/26985127/?from=showing"

m_id = re.search("[0-9]+", movie_url).group()

# 获取soup对象
soup = app.get_soup(url=movie_url, headers=header, charset="utf-8")
content = soup.find(id="content")

# 抓取电影名字和上映年份
m_name = content.find("h1").find("span").string
m_year = content.find(class_="year").string

# 抓取导演
info = content.find(id="info")
m_directer = info.find(attrs={"rel": "v:directedBy"}).string
# 上映日期
m_date = info.find(attrs={"property": "v:initialReleaseDate"}).string

# 类型
types = info.find_all(attrs={"property": "v:genre"}, limit=2)
m_types = []
for type_ in types:
    m_types.append(type_.string)


# 抓取主演,只取前面五个
actors = info.find(class_="actor").find_all(attrs={"rel": "v:starring"}, limit=5)
m_actors = []
for actor in actors:
    m_actors.append(actor.string)

# 片长
m_time = info.find(attrs={"property": "v:runtime"}).string
# m_adaptor = info.select()

print("id", m_id, "名称", m_name, "年份 ", m_year, "导演 ", m_directer, "主演", m_actors)
print("上映日期", m_date, "类型", m_types, "片长", m_time)

输出:

id 26985127 名称 一出好戏 年份  (2018) 导演  黄渤 主演 ['黄渤', '舒淇', '王宝强', '张艺兴', '于和伟']
上映日期 2018-08-10(中国大陆) 类型 ['剧情', '喜剧'] 片长 134分钟

简单粗暴

 

转载于:https://www.cnblogs.com/yeyeck/p/9484882.html

相关文章:

  • C++ MFC Tab Control控件的详细使用
  • python分支结构(无switch结构)
  • shell脚本(三)
  • 2500元就可以做一个企业网站吗?网站建设价格多少合适?
  • svchost.exe占用CPU 100%的解决方法
  • 基于业务单元的开发与部署模式
  • good
  • Robot Framework之使用Cookie获取验证码登录账户
  • fopen 模拟 post 提交
  • 软件架构笔记 四
  • Cannot make a static reference to the non-static
  • git提交代码到远程仓库
  • 恢复显示“本地用户和组”和恢复显示“用户账户”
  • 封装和解构、集合、字典的简介
  • 2015必须要看的APP源码
  • 07.Android之多媒体问题
  • CSS3 变换
  • ESLint简单操作
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • HTTP请求重发
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql常用命令汇总
  • Python连接Oracle
  • Quartz初级教程
  • Redis在Web项目中的应用与实践
  • Redux系列x:源码分析
  • Spark RDD学习: aggregate函数
  • 设计模式 开闭原则
  • 深度解析利用ES6进行Promise封装总结
  • 手机端车牌号码键盘的vue组件
  • 阿里云ACE认证学习知识点梳理
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #include<初见C语言之指针(5)>
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • ${factoryList }后面有空格不影响
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (安卓)跳转应用市场APP详情页的方式
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .net Application的目录
  • .NET Micro Framework初体验
  • .NET导入Excel数据
  • .NET基础篇——反射的奥妙
  • .Net接口调试与案例
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [1181]linux两台服务器之间传输文件和文件夹
  • [2544]最短路 (两种算法)(HDU)