当前位置: 首页 > wzjs >正文

做教育类的网站名百度提问在线回答问题

做教育类的网站名,百度提问在线回答问题,捷克网站后缀,企业门户网站建设教程前言:从猫眼电影排行榜页面(TOP100榜 - 猫眼电影 - 一网打尽好电影 )爬取 Top100 电影的电影名称、图片地址、主演、上映时间和评分等关键信息,并将这些信息存储到本地 MongoDB 数据库中,🔗 相关链接Xpath&…

前言:从猫眼电影排行榜页面(TOP100榜 - 猫眼电影 - 一网打尽好电影 )爬取 Top100 电影的电影名称、图片地址、主演、上映时间和评分等关键信息,并将这些信息存储到本地 MongoDB 数据库中,🔗 相关链接Xpath,可视化🔥🔥🔥


❤ 【作者主页—📚优质文章、获取更多优质源码】


目录

一. 准备工作

二. 编写函数 

2.1 连接MongoDB数据库

2.2 数据爬取

三. 运行结果

四. 更多干货


一. 准备工作

我们在编写python代码前,首先要导入用到的一些库 ,如果没有BeautifulSoup,就在终端输入pip install BeautifulSoup下载即可

import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
import re
import time
import random

二. 编写函数 

def自定义函数名scrape_maoyan_top100,然后定义url网址,设置请求头

def scrape_maoyan_top100():url = "https://www.maoyan.com/board/4"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36','Referer': 'https://www.maoyan.com/','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'max-age=0','Connection': 'keep-alive'}

为了提高代码健壮性,使用try函数作异常处理,time.sleep()保障每次请求之间的随机延迟,通过避免短时间内频繁发送请求,保证数据爬取过程的稳定性和可持续性,接着发送get请求检验响应的状态码,使用utf-8解码,并将获取到的 HTML 内容赋值给html变量,保存为maoyan.html,然后BeautifulSoup解析 html 

    try:time.sleep(random.uniform(1, 3))response = requests.get(url, headers=headers, timeout=10)response.raise_for_status()response.encoding = 'utf-8'html = response.textwith open('maoyan.html', 'w', encoding='utf-8') as f:f.write(html)soup = BeautifulSoup(html, 'html.parser')

2.1 连接MongoDB数据库

使用MongoClient('mongodb://localhost:27017/')接到本地运行的 MongoDB 服务器,获取本地连接中的数据库对象maoyan和集合对象top_movies,在插入数据之前,先清空集合中的原有数据,以保证每次运行代码存储的都是最新数据

        client = MongoClient('mongodb://localhost:27017/')db = client['maoyan']collection = db['top_movies']collection.delete_many({})

2.2 数据爬取

首先我们要分析该网页的html结构,如下图所示,所有的电影信息被包裹在一个 class 为 board-wrapper 的元素中,该元素起到了一个容器的作用

如下图所示,第一个<dd>标签包含第一部电影的所有信息,我们可以看到下方黄色的边框里的每一个并列的<dd>标签,就可以推断出每部电影的信息都以<dd>标签为单位进行包裹

根据以上两幅图片,我们可以总结出该网站的缩略html结构(仅包含电影信息)如下

    <dl class="board-wrapper><dd>第一部电影的信息 </dd><dd>第二部电影的信息 </dd></dl>

分析完网页结构后,接着写soup.select🔍('.board-wrapper dd') 就会选择到 <dl class="board-wrapper"> 内部的所有 <dd> 标签,也就是每部电影的信息所在的标签

select🔍 是 BeautifulSoup 对象的一个方法,它可以依据 CSS 选择器来筛选元素;CSS 选择器是一种用于选择 HTML 元素的语法,借助它能够快速定位到所需的元素。

然后定义一个空列表 movie_data_list,循环movie_items里面包含的每一个电影信息,从而提取出每个电影的名称、主演、评分、上映时间和电影封面地址等具体信息;接下来我们要找到电影图片的class属性,进入该网页TOP100榜 - 猫眼电影 - 一网打尽好电影右键电影图片,选择检查,然后一级一级的找到它的CSS属性.board-img,如下图所示,因为每个电影信息html结构一样,所以.board-img代表每个电影图片的属性,因此item.select_one('.board-img')是定位到图片所在的标签,接下来通过item.select_one('.board-img')获取data-src属性的值作为图片的 URL

我们以同样的方式,如下图所示,找到电影名称的CSS属性是.name,为了定位到.name下的<a>标签里面的文本,我们接着写select方法:name_tag=item.select_one('.name a'),通过name_tag来获取文本元素

movie_name = name_tag.text.strip()

电影评分、上映时间等信息也是按照以上步骤进行编码,其中需要注意的是如下图电影评分是有两个属性组成的,因此,需要我们写两个select方法并将它们组合起来,数据爬取的全部代码如下

        movie_items = soup.select('.board-wrapper dd')movie_data_list = []for item in movie_items:try:img_tag = item.select_one('.board-img')img_url = img_tag['data-src'] if img_tag and 'data-src' in img_tag.attrs else img_tag['src'] if img_tag else Noneif img_url and img_url.startswith('//'):img_url = 'https:' + img_urlname_tag = item.select_one('.name a')movie_name = name_tag.text.strip() if name_tag else Nonestars_tag = item.select_one('.star')stars = stars_tag.text.replace('主演:', '').strip() if stars_tag else Nonerelease_tag = item.select_one('.releasetime')release_time = release_tag.text.strip() if release_tag else Noneinteger_tag = item.select_one('.integer')fraction_tag = item.select_one('.fraction')score = (integer_tag.text.strip() + fraction_tag.text.strip()) if integer_tag and fraction_tag else None

最后获取到的数据以字典形式组织,包含movie_name(电影名称)、img_url(图片地址)、stars(主演)、release_time(上映时间)、score(评分)和crawl_time(抓取时间)。然后,批量插入到 MongoDB 数据库的top_movies集合中

                movie_data = {'movie_name': movie_name,'img_url': img_url,'stars': stars,'release_time': release_time,'score': score,'crawl_time': time.strftime('%Y-%m-%d %H:%M:%S')}movie_data_list.append(movie_data)

编写主函数运行程序

if __name__ == "__main__":scrape_maoyan_top100()

三. 运行结果

四. 更多干货

--------------------- - -----✈---------   ---------✈--------------------✈-------
1.如果我的博客对你有帮助或你喜欢我的博客内容,请 “👍点赞” “✍️评论” “★收藏” 一键三连哦!

2.❤️【👇🏻👇🏻👇🏻关注我| 获取更多源码 | 优质文章】 带您学习各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、微信小程序模板 、等! 「在这里一起探讨知识,互相学习」!

3.以上内容技术相关问题✉欢迎一起交流学习 ☟   ☟   ☟
————————————————

http://www.dtcms.com/wzjs/363483.html

相关文章:

  • 南宁专业做网站方案手机怎么建自己的网站
  • 深圳专业网站建设平台百度软文推广公司
  • 可以做动画的网站都有哪些软件下载优化推广网站seo
  • 网站策划和网站制作嘉兴网站建设
  • 目前做那些网站能致富拉新工作室在哪里接项目
  • 郑州网站开发定制百度网站排名查询
  • 池州建设机械网站百度导航怎么下载
  • b2b网站模板下载电脑软件推广平台
  • 做网站无赖客户退款友谊平台
  • 上海公司招聘信息江西seo推广
  • 网站建设一点通南昌seo计费管理
  • 大港做网站公司上海网站推广广告
  • 商城网站现在可以做么站长之家权重查询
  • 免费做链接的网站公司推广渠道
  • 怎样做网站的优化排名如何做自己的网站
  • 做跨境都有哪些网站进行网络推广
  • 杭州做网站哪家好seo快速排名上首页
  • 专业企业展厅设计公司seo常用的工具
  • 东莞知名企业排名宁波谷歌seo推广公司
  • 长沙长沙h5网站建设谷歌排名优化入门教程
  • 台州做微网站网络营销推广方案范文
  • 长宁网站建设seo渠道
  • 做网站用什么源码最好如何优化网站首页
  • 怎么样网站开源seo为什么要进行外部优化
  • 北京做网站公司有哪些百度搜索排名怎么靠前
  • shopify做国内网站咸阳网站建设公司
  • 论坛网站开发教程网络营销模式有哪些
  • 中国平安网站建设深圳货拉拉
  • 做网站用的背景图微信营销号
  • 吉林松原疫情最新消息seo查询网站是什么