python爬虫爬取豆瓣电影

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 最近买了《python编程从入门到实践》,想之后写两篇文章,一篇数据可视化,一篇python web,今天这篇就当python入门吧。一.前期准备:IDE准备:pycharm导入的python库:requests用于请求,BeautifulSoup用于网页解析二.

最近买了《python编程从入门到实践》,想之后写两篇文章,一篇数据可视化,一篇python web,今天这篇就当python入门吧。

一.前期准备:

IDE准备:pycharm
导入的python库:requests用于请求,BeautifulSoup用于网页解析

二.实现步骤

1.传入url

2.解析返回的数据

3.筛选

4.遍历提取数据

三.代码实现

import requests # 导入网页请求库
from bs4 import BeautifulSoup # 导入网页解析库

# 传入URL
r = requests.get("https://movie.douban.com/top250")

# 解析返回的数据
soup=BeautifulSoup(r.content,"html.parser")

#找到div中,class属性为item的div
movie_list=soup.find_all("div",class_="item")

#遍历提取数据
for movie in movie_list:
    title=movie.find("span",class_="title").text
    rating_num=movie.find("span",class_="rating_num").text
    inq=movie.find("span",class_="inq").text
    star = movie.find('div', class_='star')
    comment_num = star.find_all('span')[-1].text
    print(title, rating_num, '\n', comment_num, inq, '\n')

以title变量为例,我们找到了div中,class属性为item的div,然后在此div中,筛选出class名为title的span,获取文本内容,打印(comment_num比较特殊,因为其在star的div下,没有class属性,为div中最后一个span,所以我们取出star层级中最后一个span,变为文本),以下是输出结果。


img_446cb68535aaad97f1c6783f594a6b25.jpe
豆瓣.JPG

四.对获取到的数据进行整合

1.整合成列表

2.整合成json文件

3.定义为函数形式

1.整合成列表

import requests # 导入网页请求库
from bs4 import BeautifulSoup # 导入网页解析库
import pprint # 规范显示列表的插件库

# 传入URL
r = requests.get("https://movie.douban.com/top250")

# 解析返回的数据
soup=BeautifulSoup(r.content,"html.parser")

#找到div中,class属性为item的div
movie_list=soup.find_all("div",class_="item")

#创建存储结果的空列表
result_list=[]

#遍历提取数据
for movie in movie_list:
    #创建字典
    dict={}
    dict["title"]=movie.find("span",class_="title").text
    dict["dictrating_num"]=movie.find("span",class_="rating_num").text
    dict["inq"]=movie.find("span",class_="inq").text
    star = movie.find('div', class_='star')
    dict["comment_num"] = star.find_all('span')[-1].text
    result_list.append(dict)

    # 显示结果
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(result_list)

控制台显示的结果:


img_fd2531c8a9777b90c52e02837bd96684.jpe
列表.JPG

2.整合成JSON文件

import requests # 导入网页请求库
import json# 用于将列表字典(json格式)转化为相同形式字符串,以便存入文件
from bs4 import BeautifulSoup # 导入网页解析库


# 传入URL
r = requests.get("https://movie.douban.com/top250")

# 解析返回的数据
soup=BeautifulSoup(r.content,"html.parser")

#找到div中,class属性为item的div
movie_list=soup.find_all("div",class_="item")

#创建存储结果的空列表
result_list=[]

#遍历提取数据
for movie in movie_list:
    #创建字典
    dict={}
    dict["title"]=movie.find("span",class_="title").text
    dict["dictrating_num"]=movie.find("span",class_="rating_num").text
    dict["inq"]=movie.find("span",class_="inq").text
    star = movie.find('div', class_='star')
    dict["comment_num"] = star.find_all('span')[-1].text
    result_list.append(dict)

    # 显示结果
# 将result_list这个json格式的python对象转化为字符串
s = json.dumps(result_list, indent = 4, ensure_ascii=False)
# 将字符串写入文件
with open('movies.json', 'w', encoding = 'utf-8') as f:
    f.write(s)

结果:


img_03658bb7b89f70ac9020280f7b597ad5.jpe
json.JPG

3.定义成函数

import requests # 导入网页请求库
import json# 用于将列表字典(json格式)转化为相同形式字符串,以便存入文件
from bs4 import BeautifulSoup # 导入网页解析库

# 用于发送请求,获得网页源代码以供解析
def start_requests(url):
    r = requests.get(url)
    return r.content

# 解析返回的数据
def parse(text):
    soup=BeautifulSoup(text,"html.parser")
    movie_list=soup.find_all("div",class_="item")
    result_list=[]
    for movie in movie_list:
    #创建字典
        dict={}
        dict["title"]=movie.find("span",class_="title").text
        dict["dictrating_num"]=movie.find("span",class_="rating_num").text
        dict["inq"]=movie.find("span",class_="inq").text
        star = movie.find('div', class_='star')
        dict["comment_num"] = star.find_all('span')[-1].text
        result_list.append(dict)
    return result_list

    #将数据写入json文件
def write_json(result):
    s = json.dumps(result, indent = 4, ensure_ascii=False)
    with open('movies1.json', 'w', encoding = 'utf-8') as f:
        f.write(s)

# 主运行函数,调用其他函数
def main():
    url = 'https://movie.douban.com/top250'
    text = start_requests(url)
    result = parse(text)
    write_json(result)

if __name__ == '__main__':
    main()

结果:


img_c6a3657cae5ef019047d9cafaadcc8b7.jpe
函数.JPG

觉得有用的话就给颗小吧~

相关文章
|
6月前
|
数据采集 数据可视化 算法
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
本文设计并实现了一个基于Python的豆瓣电影TOP250爬虫与可视化系统,通过获取电影评分、评论并应用词云和饼图等可视化技术,为用户提供了电影评价的直观展示和深入分析。
1301 3
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
|
3月前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
172 1
|
5月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能电影制作与剪辑
使用Python实现深度学习模型:智能电影制作与剪辑
203 5
|
4月前
|
数据采集 开发者
爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数
爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数
190 0
|
6月前
|
算法 程序员 开发工具
百万级Python讲师又一力作!Python编程轻松进阶,豆瓣评分8.1
在学习Python的旅程中你是否正在“绝望的沙漠”里徘徊? 学完基础教程的你,是否还在为选择什么学习资料犹豫不决,不知从何入手,提高自己?
百万级Python讲师又一力作!Python编程轻松进阶,豆瓣评分8.1
|
6月前
|
数据采集 自然语言处理 数据可视化
优秀python系统案例】基于python Flask的电影票房数据爬取与可视化系统的设计与实现
本文介绍了一个基于Python Flask框架开发的电影票房数据爬取与可视化系统,该系统利用网络爬虫技术从豆瓣电影网站抓取数据,通过Python进行数据处理和分析,并采用ECharts等库实现数据的可视化展示,为电影行业从业者提供决策支持。
427 2
优秀python系统案例】基于python Flask的电影票房数据爬取与可视化系统的设计与实现
|
6月前
|
数据采集 存储 机器学习/深度学习
豆瓣评分7.6!Python大牛教你如何采集网络数据
网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。你在浏览器上看到的内容,大部分都可以通过编写Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。 今天给小伙伴们分享的这份手册采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。
|
6月前
|
XML 程序员 数据格式
豆瓣评分8.6!Python社区出版的Python故事教程,太强了!
Python 是活力四射的语言,是不断发展中的语言。就连使用 Python 多年的行者也不敢说对 Python 的方方面面都了解并可以自由运用,想必读者可能更加无法快速掌握所有重点技巧了。 今天给小伙伴们分享的这份手册是用互动的开发故事来探讨Pyfhonic开发的故事书籍,是一本Python语言详解书籍,由Python的行者根据自身经验组织而成,是为从来没有听说过Python的其他语言程序员准备的一份实用的导学性质的书,笔者试图将优化后的学习体验,通过故事的方式传达给读者。对于零基础的小白来说更建议入门后再来品读。
|
5月前
|
数据采集
做个爬虫吧:豆瓣《八佰》影评
做个爬虫吧:豆瓣《八佰》影评
65 0
|
6月前
|
存储 JSON 算法
豆瓣评分9.4!最适合Python入门后进阶的Python食谱!
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

推荐镜像

更多