博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬虫爬取豆瓣电影
阅读量:6954 次
发布时间:2019-06-27

本文共 3712 字,大约阅读时间需要 12 分钟。

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

一.前期准备:

IDE准备:

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

二.实现步骤

1.传入url

2.解析返回的数据

3.筛选

4.遍历提取数据

三.代码实现

import requests # 导入网页请求库from bs4 import BeautifulSoup # 导入网页解析库# 传入URLr = requests.get("https://movie.douban.com/top250")# 解析返回的数据soup=BeautifulSoup(r.content,"html.parser")#找到div中,class属性为item的divmovie_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 # 规范显示列表的插件库# 传入URLr = requests.get("https://movie.douban.com/top250")# 解析返回的数据soup=BeautifulSoup(r.content,"html.parser")#找到div中,class属性为item的divmovie_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 # 导入网页解析库# 传入URLr = requests.get("https://movie.douban.com/top250")# 解析返回的数据soup=BeautifulSoup(r.content,"html.parser")#找到div中,class属性为item的divmovie_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

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

转载地址:http://qpjil.baihongyu.com/

你可能感兴趣的文章
使用 Toad 实现 SQL 优化
查看>>
.NET开发技巧——从Winform穿越到WPF
查看>>
2135亿背后的双11项目协作怎么玩?
查看>>
DRDS SQL 审计与分析——全面洞察 SQL 之利器
查看>>
微信小程序:模板消息推送实现
查看>>
CodePush自定义更新弹框及下载进度条
查看>>
自己总结的php开发中用到的工具
查看>>
小程序视频或音频自定义可拖拽进度条
查看>>
PHP导出超大的CSV格式的Excel表方案
查看>>
Mac 环境下如何生成Git shh key
查看>>
jenkins 使用磁盘检查插件 disk check plugin
查看>>
使用 Ruby 拓展 Vim
查看>>
centos7下安装LNMP(nginx+PHP7.1.9+mysql5.7)
查看>>
NodeAPI学习之Buffer
查看>>
深入java单例模式
查看>>
create-react-app
查看>>
20170812-XSS跨站脚本攻击
查看>>
Let’s Build |> 使用Elixir,Phoenix和React打造克隆版的Slack(part 1)
查看>>
如何让 StackNaivgator 实现越级回跳
查看>>
工具简述
查看>>