资讯专栏INFORMATION COLUMN

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

galaxy_robot / 1207人阅读

摘要:查看源码下载页面并处理提取数据观察该网站结构可知该页面下所有电影包含在标签下。使用语句获取该标签在标签中遍历每个标签获取单个电影的信息。以电影名字为例清洗数据其余部分详见源码页面跳转检查后页标签。

查看源码


1 下载页面并处理
DOWNLOAD_URL = "http://movie.douban.com/top250/"
html = requests.get(url).text
tree = lxml.html.fromstring(html)

2 提取数据

观察该网站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())  # 清洗数据

其余部分详见源码


3 页面跳转

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

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

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


4 导入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)

其余部分详见源码


5 导入数据库(以mysql为例)

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

连接数据库db = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd=PWD, 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()

6 效果显示


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

以上所有内容可以在80行Python代码内完成,很简单吧。(`・ω・´)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41012.html

相关文章

  • Python爬虫 - scrapy - 爬取豆瓣电影TOP250

    摘要:前言新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。 0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。所以找了很多实例和文...

    WalkerXu 评论0 收藏0
  • scrapy入门教程——爬取豆瓣电影Top250

    摘要:注意爬豆爬一定要加入选项,因为只要解析到网站的有,就会自动进行过滤处理,把处理结果分配到相应的类别,但偏偏豆瓣里面的为空不需要分配,所以一定要关掉这个选项。 本课只针对python3环境下的Scrapy版本(即scrapy1.3+) 选取什么网站来爬取呢? 对于歪果人,上手练scrapy爬虫的网站一般是官方练手网站 http://quotes.toscrape.com 我们中国人,当然...

    senntyou 评论0 收藏0
  • 爬虫基础练习一 爬取豆瓣电影TOP250

    摘要:对新手来说,难点部分在于如何找到并成功跳转到下一页,并且在最后一页的时候识别出来并停止爬虫。一个很基础的爬虫。 这是一个很好的新手练习项目,爬取豆瓣top250的电影,并分别记录排名、片名、导演、主演、评论等信息,保存在一个txt文档里。对新手来说,难点部分在于如何找到并成功跳转到下一页,并且在最后一页的时候识别出来并停止爬虫。 一个很基础的爬虫。以下是代码部分。 import req...

    reclay 评论0 收藏0
  • 爬虫学习之基于 Scrapy 的爬虫自动登录

    摘要:概述在前面两篇爬虫学习之基于的网络爬虫和爬虫学习之简单的网络爬虫文章中我们通过两个实际的案例,采用不同的方式进行了内容提取。 概述 在前面两篇(爬虫学习之基于Scrapy的网络爬虫和爬虫学习之简单的网络爬虫)文章中我们通过两个实际的案例,采用不同的方式进行了内容提取。我们对网络爬虫有了一个比较初级的认识,只要发起请求获取响应的网页内容,然后对内容进行格式化存储。很多时候我们抓取到的内容...

    Panda 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<