网页文章自动采集(豆瓣电影Top250相关信息的爬取过程、数据分析、展示应用)

优采云 发布时间: 2021-12-30 00:07

  网页文章自动采集(豆瓣电影Top250相关信息的爬取过程、数据分析、展示应用)

  爬虫是授权或公共数据的自动采集

。百度只是一个爬虫,一个蜈蚣。学会爬行会让你觉得自己离超越百度指日可待。无论人们多么勇敢,土地多么富有成效,如果梦想成真,仍然需要梦想。人不怕做梦,只怕不知道,不去想。

  大数据太火了。核心是各种应用场景的开发。基础仍然是数据采集

。比如天眼查APP,其实就是一个爬虫,爬取各种数据,集成应用。

  想学爬虫,不得不提一个神奇的网站。他是每一个爬虫小白的启蒙老师,每一个懵懂少年都是从这里开始探索互联网的未知领域。通过这位启蒙老师,他第一次尝到了乐趣。,停不下来,熟悉掌握各种技能,沉迷其中,难以自拔,一发不可收拾。这位老师善解人意,不愿来。他对四处爬行获取数据的小虫子非常友好。没有反爬虫机制,让爬虫小白第一次有了嫖妓的乐趣,体验非常过瘾。

  铺路是不是有点太多了?嗯,这个网站就是-豆瓣。

  今天无私分享豆瓣电影Top250相关信息的爬取过程、数据分析、展示应用,会涉及到beautifulsoup模块、SQLite数据库、Flask后端框架、echarts前端模块、wordcloud词云模块.

  一、爬虫数据采集

  一个简单的爬虫基本上分三步完成:

  第 1 步:发送请求。url地址必须构造为自动采集

  第二步:解析数据。在获得对请求的响应后,解析网页并提取所需的数据。

  第三步:保存并显示。将提取的数据保存到excel或数据库中,然后通过GUI或网站显示出来。

  

  具体来说,首先分析我们要爬取的目标网站:分析目标数据的位置。我们需要提取电影的详细链接、名称、主演、评分、评论人数和简介。这些数据基本都在当前页面下,不需要进入电影详情页面提取。然后分析页面规则。Top250每页只收录

25部电影,也就是说你要自动抓取10页。点击下一页,发现每一页的地址都是按照规律递增的,即(i为页数)。找到页面后,我们只想找到一种方法来解析页面并获取我们想要的信息。详情如下:

  1.发送请求:

  request = urllib.request.Request(url, headers=headers)

  响应 = urllib.request.urlopen(request)

  html = response.read()

  2.分析网页:

  汤 = BeautifulSoup(html,'html.parser')

  temp = soup.find_all('div', class_='item') #找到每部电影所在的div

  3.定义正则表达式:

  pat_link = pie(r'a href="(.*?)">') #电影链接

  pat_img = 桩(r'

  

  pat_title = pie('(.*?)') #电影标题

  pat_info = 桩(r'

  (.*?)

  ', re.S) #电影演职信息

  pat_rating = 桩(r'(.*?)')#电影评级

  pat_judge = pie(r'(\d*)人评') #电影评价数

  pat_inq = pie(r'(.*?)') #简介

  4.提取数据

  对于临时项目:

  数据 = []

  项目 = str(项目)

  movie_link = re.findall(pat_link, item)[0]

  数据.附加(电影链接)

  以提取电影链接为例,其他内容提取方法类似。

  这样,250部电影所需的信息就被提取出来了。

  二、数据存储

  简单的数据可以保存到excel,复杂的数据可以保存到数据库中。推荐从SQLite开始学习数据库,SQLite是轻量级数据库,python自带sqlite3模块。

  数据库的语言比较简单,就是插入语句有点麻烦。SQLite中的字段都是字符串,python封装的SQLite语句也是字符串。确保python封装的字符串符合SQLite语言规范传递给SQLite。这里简单介绍一下保存数据的代码。

  conn = sqlite3.connect(database=save_path)

  游标 = conn.cursor()

  对于我在范围内(len(数据)):

  数据[i] ='"'+数据[i]+'"'

  sql ='''

  INSERT INTO douban250(cn_name,fn_name,mov_link,img_link,info,rating,judge,instruction)

  VALUES(%s)'''%','.join(data)

  游标.执行(sql)

  mit()

  conn.close()

  三、数据展示

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线