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

1 下载页面并处理

DOWNLOAD_URL = 'http://movie.douban.com/top250/'

html = requests.get(url).text

tree = lxml.html.fromstring(html)

2 提取数据

观察该网站html结构

bVYmHw?w=719&h=705

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

使用XPath语句获取该ol标签

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

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

bVYmJk?w=1155&h=787

以电影名字为例

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 页面跳转

bVYmJV?w=1139&h=688

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

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 效果显示

bVYmMD?w=1920&h=1039

bVYmMf?w=1613&h=698

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值