暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

80 行代码爬取豆瓣 Top250 电影信息并导出到 CSV 及数据库

51reboot运维开发 2017-11-15
1437


障碍与失败,是通往成功最稳靠的踏脚石,肯研究、利用它们,便能从失败中培养出成功。


下载页面并处理


DOWNLOAD_URL = 'http://movie.douban.com/top250/'
html = requests.get(url).text
tree = lxml.html.fromstring(html)


提取数据


观察该网站 html 结构



可知该页面下所有电影包含在 ol 标签下。每个 li 标签包含单个电影的内容。


使用 XPath 语句获取该 ol 标签

movies = tree.xpath("//ol[@class='grid_view']/li")


在 ol 标签中遍历每个 li 标签获取单个电影的信息。



以电影名字为例

for movie in movies:
    name_num = len(movie.xpath("descendant::span[@class='title']"))
    name = ''
    for num in range(0, name_num):
        name += movie.xpath("descendant::span[@class='title']")[num].text.strip()
    name = ' '.join(name.replace('/', '').split())  # 清洗数据

其余部分详见源码


页面跳转



检查“后页”标签。跳转到下一页面

next_page = DOWNLOAD_URL + tree.xpath("//span[@class='next']/a/@href")[0]

返回 None 则已获取所有页面。


导入 CSV


创建 CSV 文件

writer = csv.writer(open('movies.csv', 'w', newline='', encoding='utf-8'))
fields = ('rank',  'name', 'score', 'country', 'year', 'category', 'votes', 'douban_url')
writer.writerow(fields)

其余部分详见源码


导入数据库(以 mysql 为例)


先在 mysql 中创建数据库与表,表的属性应与要插入的数据保持一致

连接数据库 db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='syb123', db='douban',charset='utf8')

创建游标 cur = db.cursor()

将获取的电影信息导入数据库

sql = "INSERT INTO test(rank, NAME, score, country, year, " \
          "category, votes, douban_url) values(%s,%s,%s,%s,%s,%s,%s,%s)"
    try:
        cur.executemany(sql, movies_info)
        db.commit()
    except Exception as e:
        print("Error:", e)
        db.rollback()


效果显示




因 Windows 系统默认以 ANSI 编码打开 Excel,所以直接用 Excel 打开 csv 文件会出现乱码,需对其重新编码。


以上所有内容可以在 80 行 Python 代码内完成,很简单吧


源码:https://github.com/AlexRedfield/douban_movies_top250


原文链接:https://segmentfault.com/a/1190000011964958


微信后台回复 python、自动化、golang 即可获得相应课程的试听资料




Python 实战班 17 期报名开始


招生要求:


想往开发或者运维开发方向发展,Python 基础为零或薄弱,但能读懂 shell 或者其它任何一门语言的同学。


课程内容:


精简版 CMDB

 
  1. html+css+js 多种前端技术结合

  2. ajax 异步请求操作

  3. 分页搜索功能

  4. 常见数据库设计原则、CMDB 表结构实战、Mysql 实操

  5. 独立完项目、了解完整的 Web(LAMP) 架构



Nginx 日志统计分析与多为可视化

 
  1. Python 处理 Nginx 日志文件,进行多维度数据统计分析

  2. 根据 ip、访问地址和访问状态等数据统计,统计结果存入数据库

  3. Highcharts 等流行前端技术多维度,将分析结果可视化展示



快速构建使用监控系统

 
  1. Python 读取机器的实时使用数据,通过 Http 请求将数据入库

  2. 设计数据入库的 API收集不同机器的数据

  3. 前端将内存数据读出,视化展示折线图

  4. 独立完成项目,掌握 Python 常用的 time 等模块



咨询报名联系:

QQ(1):979950755    小月   

QQ(2):279312229    ada   

WeChat : 1902433859   小月

WeChat : 1251743084   小单

开课时间11月25日


课程大纲http://51reboot.com/course/actual/

(阅读原文,即可跳转)

文章转载自51reboot运维开发,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论