1. 最近略忙。。java在搞soap,之前是用工具自动生成代码的。最近可能会写一个soap的java调用

2. 这个豆瓣电影的爬虫。扒信息的部分暂时先做到这了。扒到的信息如下

from scrapy import app
import reheader = {'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/27132728/?tag=%E7%83%AD%E9%97%A8&from=gaia"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
m_year = m_year[1:-1]  # 去掉头尾的括号# 抓取导演
info = content.find(id="info")
m_directer = info.find(attrs={"rel": "v:directedBy"}).string# 上映日期
m_date = info.find(attrs={"property": "v:initialReleaseDate"}).string
m_date = re.search("[-,0-9]+", m_date).group()# 类型
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_time = re.search("[0-9]+", m_time).group()# 评分
score_info = soup.find(id="interest_sectl")
m_score = score_info.find("strong").stringm_stars = score_info.find_all(class_="rating_per")
m_rate = []
for star in m_stars:m_rate.append(star.string[:-1])m_votes = score_info.find(attrs={"property": "v:votes"}).stringprint("id", m_id, "名称", m_name, "年份 ", m_year, "导演 ", m_directer, "主演", m_actors)print("上映日期", m_date, "类型", m_types, "片长", m_time)print("评分", m_score, "星评(从5星到1星)", m_rate, "评价总数", m_votes)

输出如下

id 27132728 名称 致命警告 El aviso 年份  2018 导演  丹尼尔·卡尔帕索罗 主演 ['奥拉·加里多', '劳尔·阿雷瓦洛', '贝伦·奎斯塔', 'Sergio Mur', 'Aitor Luna']
上映日期 2018-03-23 类型 ['惊悚'] 片长 92
评分 6.4 星评(从5星到1星) ['14.2', '19.9', '41.1', '21.3', '3.5'] 评价总数 445

把这些狗东西封装成一个方法。并且随便找几个豆瓣电影的url试一下。在多尝试几个url之后,会报一些问题,主要是没有进行空判断, 所以稍微修改了一点

from scrapy import app
import redef douban_movie(movie_url):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'}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").stringm_year = content.find(class_="year").stringm_year = m_year[1:-1]  # 去掉头尾的括号# 抓取导演info = content.find(id="info")m_directer = info.find(attrs={"rel": "v:directedBy"}).string# 上映日期m_date = info.find(attrs={"property": "v:initialReleaseDate"}).stringm_date = re.search("[-,0-9]+", m_date).group()# 类型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"})m_time = re.search("[0-9]+", m_time.string).group() if m_time else 0# 评分score_info = soup.find(id="interest_sectl")m_score = score_info.find("strong").stringm_stars = score_info.find_all(class_="rating_per")m_rate = []for star in m_stars:m_rate.append(star.string[:-1])m_votes = score_info.find(attrs={"property": "v:votes"})m_votes = m_votes.string if m_votes else 0print("id", m_id, "名称", m_name, "年份 ", m_year, "导演 ", m_directer, "主演", m_actors)print("上映日期", m_date, "类型", m_types, "片长", m_time)print("评分", m_score, "星评(从5星到1星)", m_rate, "评价总数", m_votes)douban_movie("https://movie.douban.com/subject/30236775/?from=showing")
douban_movie("https://movie.douban.com/subject/26842702/?tag=%E7%83%AD%E9%97%A8&from=gaia")
douban_movie("https://movie.douban.com/subject/26973784/?tag=%E6%9C%80%E6%96%B0&from=gaia")
douban_movie("https://movie.douban.com/subject/30249296/?tag=%E7%83%AD%E9%97%A8&from=gaia")

输出如下

id 30236775 名称 旅行吧!井底之蛙 年份  2018 导演  陈设 主演 ['王雪沁', '吴凡', '周宗禹', '强光宗', '张艺文']
上映日期 2018-08-18 类型 ['动画', '奇幻'] 片长 78
评分 None 星评(从5星到1星) [] 评价总数 0
id 26842702 名称 燃烧 버닝 年份  2018 导演  李沧东 主演 ['刘亚仁', '史蒂文·元', '全钟瑞', '金秀京', '崔承浩']
上映日期 2018-05-16 类型 ['剧情', '悬疑'] 片长 148
评分 7.9 星评(从5星到1星) ['25.9', '48.1', '21.4', '3.2', '1.3'] 评价总数 81519
id 26973784 名称 设局 La niebla y la doncella 年份  2017 导演  安德烈斯·M·科佩尔 主演 ['基姆·古铁雷斯', '薇洛妮卡·恩切圭', '奥拉·加里多', '罗伯托·阿拉莫']
上映日期 2017-09-08 类型 ['惊悚'] 片长 0
评分 5.2 星评(从5星到1星) ['1.2', '9.8', '42.0', '40.0', '7.1'] 评价总数 320
id 30249296 名称 我们的侣行 第二季 年份  2018 导演  张昕宇 主演 ['张昕宇', '梁红']
上映日期 2018-06-12 类型 ['真人秀'] 片长 0
评分 8.9 星评(从5星到1星) ['59.3', '27.8', '11.1', '1.9', '0.0'] 评价总数 342

又稍微修改了一下

1. 把原方法加了一个返回值返回一个存储数据的字典

2.对数据做了一些转换,主要是把字符串转成数字

3.对电影和电视剧做了一个区分。

from scrapy import app
import re
import datetimedef douban_movie(movie_url):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 = {}m_id = re.search("[0-9]+", movie_url).group()movie["id"] = m_id# 获取soup对象soup = app.get_soup(url=movie_url, headers=header, charset="utf-8")content = soup.find(id="content")kinds = content.find(class_="episode_list")movie["type"] = 0 if kinds else 1             # 0 :电视剧,1:电影。如果有分集数,为电视剧, 否则就是电影# 抓取电影名字和上映年份m_name = content.find("h1").find("span").stringmovie["name"] = m_name;m_year = content.find(class_="year").stringm_year = m_year[1:-1]  # 去掉头尾的括号movie["year"] = m_year# 抓取导演info = content.find(id="info")m_directer = info.find(attrs={"rel": "v:directedBy"}).stringmovie["directer"] = m_directer# 上映日期m_date = info.find(attrs={"property": "v:initialReleaseDate"}).stringm_date = re.search("[-,0-9]+", m_date).group()movie["date"] = datetime.datetime.strptime(m_date, '%Y-%m-%d')# 类型categories = info.find_all(attrs={"property": "v:genre"}, limit=2)m_categories = []for category in categories:m_categories.append(category.string)movie["categories"] = m_categories# 抓取主演,只取前面五个actors = info.find(class_="actor").find_all(attrs={"rel": "v:starring"}, limit=5)m_actors = []for actor in actors:m_actors.append(actor.string)movie["actors"] = m_actors# 片长m_time = info.find(attrs={"property": "v:runtime"})m_time = int(re.search("[0-9]+", m_time.string).group()) if m_time else 0movie["time"] = m_time# 评分score_info = soup.find(id="interest_sectl")m_score = score_info.find("strong").string if score_info.find("strong") else 0.0movie["score"] = float(m_score) if m_score else 0.0m_stars = score_info.find_all(class_="rating_per")m_rate = []for star in m_stars:m_rate.append(float(star.string[:-1]))movie["stars"] = m_ratem_votes = score_info.find(attrs={"property": "v:votes"})m_votes = int(m_votes.string) if m_votes else 0movie["vote"] = m_votesreturn movieprint(douban_movie("https://movie.douban.com/subject/30236775/?from=showing"))
print(douban_movie("https://movie.douban.com/subject/26842702/?tag=%E7%83%AD%E9%97%A8&from=gaia"))
print(douban_movie("https://movie.douban.com/subject/26973784/?tag=%E6%9C%80%E6%96%B0&from=gaia"))
print(douban_movie("https://movie.douban.com/subject/30249296/?tag=%E7%83%AD%E9%97%A8&from=gaia"))

输出

{'id': '30236775', 'type': 1, 'name': '旅行吧!井底之蛙', 'year': '2018', 'directer': '陈设', 'date': datetime.datetime(2018, 8, 18, 0, 0), 'categories': ['动画', '奇幻'], 'actors': ['王雪沁', '吴凡', '周宗禹', '强光宗', '张艺文'], 'time': 78, 'score': 0.0, 'stars': [], 'vote': 0}
{'id': '26842702', 'type': 1, 'name': '燃烧 버닝', 'year': '2018', 'directer': '李沧东', 'date': datetime.datetime(2018, 5, 16, 0, 0), 'categories': ['剧情', '悬疑'], 'actors': ['刘亚仁', '史蒂文·元', '全钟瑞', '金秀京', '崔承浩'], 'time': 148, 'score': 7.9, 'stars': [25.9, 48.1, 21.5, 3.2, 1.3], 'vote': 83194}
{'id': '26973784', 'type': 1, 'name': '设局 La niebla y la doncella', 'year': '2017', 'directer': '安德烈斯·M·科佩尔', 'date': datetime.datetime(2017, 9, 8, 0, 0), 'categories': ['惊悚'], 'actors': ['基姆·古铁雷斯', '薇洛妮卡·恩切圭', '奥拉·加里多', '罗伯托·阿拉莫'], 'time': 0, 'score': 5.2, 'stars': [1.2, 9.8, 41.8, 40.2, 7.0], 'vote': 321}
{'id': '30249296', 'type': 0, 'name': '我们的侣行 第二季', 'year': '2018', 'directer': '张昕宇', 'date': datetime.datetime(2018, 6, 12, 0, 0), 'categories': ['真人秀'], 'actors': ['张昕宇', '梁红'], 'time': 0, 'score': 8.9, 'stars': [59.3, 28.8, 10.2, 1.7, 0.0], 'vote': 400}

【Python】从0开始写爬虫——豆瓣电影相关推荐

  1. python爬虫—豆瓣电影海报(按类别)

    原文地址:http://www.alannah.cn/2019/04/06/getdouban/ python爬虫-豆瓣电影海报 目标:通过python爬虫在豆瓣电影上按类别对电影海报等数据进行抓取, ...

  2. python爬虫-豆瓣电影Top250

    豆瓣电影Top250 一.准备环境 idea+python插件/python 一.需求分析 1. 运用代码获取豆瓣电影Top250里面电影的相关信息: 影片详情链接: 影片名称: 影片图片链接: 影片 ...

  3. 爬虫——豆瓣电影top250

    爬虫--豆瓣电影top250 无论是动态网页爬虫和静态网页爬虫,实现的思路基 本上都是获取页面 html.页面解析.数据保存或输出.虽然获取页面 html 以及数据保存都 已经封装为通用函数,但依然编 ...

  4. 使用Python爬取不同类别的豆瓣电影简介

    使用Python爬取不同类别的豆瓣电影简介 之前做过一点文本分类的工作,从豆瓣上爬取了不同类别的数千条电影的简介. 爬取目标 我们爬取的目标是 豆瓣影视,打开豆瓣网,随便点击一部电影,即可看到电影的介 ...

  5. python 存入数据库bigint_【Python】从0开始写爬虫——把扒到的豆瓣数据存储到数据库...

    1. 我们扒到了什么? id, 名称, 上映年份,上映日期,所属类目, 导演,主演,片长,评分,星评,评价人数 2. 把这些数据做一个分类. a..基本信息 :名称, 导演,上映年份, 所属类目, 片 ...

  6. python爬虫 豆瓣电影

    最近学习python 顺便写下爬虫练手 爬的是豆瓣电影排行榜 http://movie.douban.com/chart python版本2.7.6 // 安装 Beautiful Soup sudo ...

  7. python爬虫豆瓣电影短评_豆瓣Python爬虫:500条电影短评

    豆瓣电影短评总数多少不一,但是在短评区只能显示500条评论. 例如<囧妈>,评论数达到117120条. (当我打开爬到的评论时,还以为自己代码有问题,检查代码未发现问题.用手机登录豆瓣AP ...

  8. python爬虫豆瓣电影评价_使用爬虫爬取豆瓣电影影评数据Python版

    在 使用爬虫爬取豆瓣电影影评数据Java版 一文中已详细讲解了爬虫的实现细节,本篇仅为展示Python版本爬虫实现,所以直接上代码 完整代码 爬虫主程序 # 爬虫启动入口 from C02.data ...

  9. Python爬虫豆瓣电影top250

      我的另一篇博客,Python爬虫豆瓣读书评分9分以上榜单   有了上次的基础,这次简单爬了下豆瓣上电影TOP250,链接豆瓣电影TOP250.   打开链接,查看网页源代码,查找我们需要的信息的字 ...

最新文章

  1. DW数据仓库与ODS的区别
  2. leetcode算法题--圆圈中最后剩下的数字
  3. (Prototype)原型模式的Java实现(转)
  4. [唐胡璐]VBS技巧 - Adding Quotes(为字符串加双引号)
  5. 深度学习(七十)darknet 实现编写mobilenet源码
  6. 面向对象 —— 类设计(九) —— 类设计的内在一致性
  7. OpenGL基础34:帧缓冲(中)之附件
  8. acm康复训练记4-world final 2017
  9. 【通信】基于matlab语音信号仿真【含Matlab源码 957期】
  10. nginx做下载文件服务器
  11. 基于FPGA的光口通信开发案例
  12. 专业录音:Audio Hijack for Mac
  13. java 异常 ppt_Java程序设计基础与实践 第6章 异常处理.ppt
  14. Python学多久能接单赚钱?按照这套路线学习,30天内就可以!
  15. CentOS 7 LVM创建与使用
  16. 本地DLL通用验证码识别/滑块识别/文字点选/图标点选/推理/OCR文字识别
  17. 老子-----《道德经》
  18. 我的电力行业求职经历(供电局电力设计院面经
  19. java代码使用重写来优化电子宠物系统
  20. 合肥工业大学计算机科学与技术教学计划,合肥工业大学计算机科学与技术学科硕士培养方案...

热门文章

  1. Python06 向前Euler法、向后Euler法、梯形方法、改进的Euler方法以及四阶Runge_Kutta方法(附代码)
  2. Python05 梯形公式 Simpson公式 Cotes公式 Romber公式(附代码)
  3. python异常处理_Python 工匠: 异常处理的三个好习惯
  4. 图片缩小不失真_科技论文中图片的处理方法有哪些?
  5. linux怎么获取目录名,linux下如何获取目录名?(四种方法)
  6. python源程序文件的扩展名_python程序文件扩展名知识点详解
  7. 计算机图形图像项目教程素材,案例任务驱动法在图形图像教学中的运用
  8. jeecgboot配置文件_Jeecg-Boot 技术文档
  9. Ubuntu 安装 python-opencv
  10. Spring Boot基础学习笔记:可视化数据