python爬虫爬取豆瓣电影
最近买了《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,变为文本),以下是输出结果。
四.对获取到的数据进行整合
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)
控制台显示的结果:
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)
结果:
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()
结果:
觉得有用的话就给颗小吧~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Invalid or corrupt jarfile坑爹问题解决
打包一个可以直接利用java-jar jarcvfmlottery.jarMANIFEST.MFjdbc.propertiescom 如果出现: java.io.IOException:invalidheaderfield这样的错误的话,就说明MANIFEST.MF文件有问题,比如写成了这样:Manifest-Version:1.0Main-Class:com.feishan.lottery.view.Index Class-Path:jar/jdbc_feishan.jarjar/mysql5.0.3.jar 或者如果觉得打的可运行jar包那里都是对的,但执行java -jarlottery.jar 或者 java -cplottery.jarcom.test.Test 怎么运行都是Invalid or corrupt jarfile 要么就是Could not find or load main class 那么99%绝对是MANIFEST.MF文件有问题 注意: Main-Class:后面应该有一个空格 Manifest-Version:1.0 Main-Class:com.fe...
- 下一篇
Python_Django2.1配置开发环境
很久之前就想建立一个属于自己的博客,但这个计划一直处在搁置的状态,在大二上学期也学过一点网页设计的皮毛,只做了几个简单的网页,就没有继续做下去了,直到接触了Python,并了解到其Django框架的强大功能,便又萌生出建立个人博客的念头,也买了相应的书,并找了网易云的Django入门教程,计划在暑假完成这个项目,好了,废话说到这,让我们来开始第一步,配置开发环境! 0.开发环境 Python3.6.5 Pycharm-2018.1.2 Win10 Django2.0.6 1.下载Django cmd输入pip install Django下载Django 输入python -m django --version查看django版本 2.创建开发文件夹 1,在你想要创建的目录下打开cmd,后续一直需要用到这个小技巧! 比如在E盘下创建 输入djangp-admin startproject myblog创建名为“myblog”的文件夹 2,打开myblog文件夹,再次在搜索栏中输入cmd 输入python manage.py startapp blog命令 3.制作hello,world...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程