最近自学了简单的爬虫项目,简单记录下自己的小白学习路径。
本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup、re、urllib库、SQLite包,数据可视化方面主要用到flask框架、echarts和wordcloud等,搭建简单的数据可视化网站。
话不多说,下面开始。
一、数据爬取阶段
1、需求分析
这次爬取的豆瓣电影TOP250信息数据,包括名称、豆瓣评分、评价人数、电影概况以及电影链接等,具体网址为https://movie.douban.com/top250
![0487854f96d51058ee3201c8507c4149.png](https://i-blog.csdnimg.cn/blog_migrate/e161221a8993733e2726d310bd2ffc9c.jpeg)
2、准备工作
(1)首先要分析页面URL,250条电影数据每页有25个,共十页的数据。
![a7e87172ff9ce6b2e3a4f2fd6080226d.png](https://i-blog.csdnimg.cn/blog_migrate/bb689a595156af58110c33984923f341.jpeg)
第一页的网址为https://movie.douban.com/top250?start=0&filter=,,观察规律可以发现该页网络地址为https://movie.douban.com/top250?start=(该页页数-1)*25,第一页是0,第二页是25,第三页是50,以此类推(后面的&filter=为过滤筛选项,可以忽略)。
(2)接下来要分析页面,找到所需数据在网页信息中的位置。在页面点击F12进入开发者模式,点击相关信息即可获得对应的网页位置。
![f2bf67cc24727d2ba616a3692564cd0e.png](https://i-blog.csdnimg.cn/blog_migrate/b09d2626392e8b1d85694b3da4afe013.jpeg)
3、获取数据
通过HTTP库向网页发起请求,请求可包含额外的header等信息(如浏览器信息基本User-Agent、Cookie等),如果服务器能正常响应,会得到一个response,这便是所要获取的页面内容。
首先导入需要的库
from bs4 import BeautifulSoup # 网页解析
import re # 正则表达式,进行文字匹配
import urllib.request,urllib.error # 指定URL,获取网页数据
import sqlite3 # 进行sqlite数据库操作
爬取网页前设定基本的数据,厘清整个框架。
def main():
baseurl = "https://movie.douban.com/top250?start="
#1.爬取网页,用getDate()函数
datalist = getDate(baseurl)
#2.逐一解析数据(可与1同步进行)
#3.保存数据,用saveData2DB()函数
dbpath = "movie.bd" #数据库保存路径
saveData2DB(datalist,dbpath) #存储到database中的方法
if __name__ == "__main__": #当程序执行时
#调用函数
main()
print("爬取完毕!")
搭好框架后,在其中加以分析,首先要获取网页的内容。
# 得到指定一个url网页内容
def askURL(url):
head = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
} # 模拟浏览器头部信息,向豆瓣服务器发送消息(发送请求时对浏览器做的伪装)
# 用户代理:表示告诉豆瓣浏览器,我们是什么类型的机器,实质上是告诉浏览器,我们可以接收什么水平的文件内容
requst = urllib.request.Request(url,headers=head) # 用封装的信息访问
html = ""
try:
response = urllib.request.urlopen(requst)
html = response.read().decode("utf-8&