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

爬虫基础学习-爬取网页项目

靶场链接:

Scrape | Movie

爬取总结:
1.进入列表页,顺着列表爬取每个电影详情页
2.利用正则来提取,海报,名称,类别,上映的时间,评分,剧情简介
3.将爬取的内容,保存下来

爬取步骤:

第一步:遍历所有的页码,拼接URL
第二步:拿到详情页页面的url
第三步:再详情页面用正则匹配出我们要的内容
第四步:保存数据

项目代码:
#! /usr/bin/env python3import logging
import requests
import re
from urllib.parse import urljoin
import pymongo# level指定记录日志的级别
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')Basic_url = 'https://ssr1.scrape.center'
TOTAL_PAGE = 10# 抓取某一页面的内容
def scrape_index(page):index_url = f'{Basic_url}/page/{page}'return scrape_page(index_url)# 定义一个函数抓取网页的内容
def scrape_page(url):logging.info("正在抓取 %s......", url)# 发送get请求try:response = requests.get(url)if response.status_code == 200:return response.textelse:logging.info("抓取 %s 时返回无效的状态码 %s ", url, response.status_code)except requests.RequestException:# 发生异常, 输出错误logging.error("抓取 %s 时发生异常", url, exc_info=True)# 解析内容, 并提取出详情页面的URL
def parse_index(html):# 用正则把连接提取出来pattern = re.compile('<a.*href="(.*?)".*?class="name">')items = re.findall(pattern, html)if not items:return []else:# 把相对来链接转化为绝对链接for item in items:detail_url = urljoin(Basic_url, item)logging.info("找到详情页面, 链接 %s ", detail_url)yield detail_urldef main():for page in range(1, TOTAL_PAGE+1):index_html = scrape_index(page)details_url = parse_index(index_html)logging.info("详情页面链接 %s ", list(details_url))if __name__ == '__main__':main()

http://www.dtcms.com/a/349614.html

相关文章:

  • vue2使用WaveSurfer实现简易的音频播放
  • 波音787项目:AR技术重塑航空制造的数字化转型
  • 用MessageBus优化模块通信:实现订阅/发布模式
  • nmcli命令详解
  • 文吃透朴素贝叶斯:从原理到实战
  • 【python文件处理】使用 open() 函数打开文件、 File 操作文件、使用 OS 对象操作文件目录的知识,使用 open() 函数打开文件
  • DMP-Net:面向脑组织术中成像的深度语义先验压缩光谱重建方法|文献速递-深度学习人工智能医疗图像
  • Android进入Activity时闪黑生命周期销毁并重建
  • 集成电路学习:什么是Caffe深度学习框架
  • 强化学习核心概念与算法详解-马尔可夫决策过程(MDP)+贝尔曼方程(Bellman Equation)
  • 合同管理软件的主要功能有什么?
  • 朴素贝叶斯学习笔记:从原理到实战(J享)
  • (LeetCode 每日一题) 498. 对角线遍历 (矩阵、模拟)
  • SSM从入门到实战:3.2 SpringMVC请求处理与控制器
  • 《C++哈希表:高效数据存储与检索的核心技术》
  • 朴素贝叶斯算法学习总结
  • MySQL 磁盘和 Redis 内存
  • 无人机航拍数据集|第22期 无人机城市交通目标检测YOLO数据集8624张yolov11/yolov8/yolov5可训练
  • Coze用户账号设置修改用户头像-前端源码
  • 【ACP】2025-最新-疑难题解析-5
  • Python Day 33 JavaScript BOM 与 DOM 核心笔记整合
  • 【数学建模】如何总结数学建模中的层次分析法最好
  • 通过Fiddler肆意修改接口返回数据进行测试
  • EXCEL自动调整列宽适应A4 A3 A2
  • OpenCV计算机视觉实战(21)——模板匹配详解
  • 将盾CDN:高防CDN和游戏盾有什么区别?
  • 宋红康 JVM 笔记 Day07|本地方法接口、本地方法栈
  • More Effective C++ 条款08:理解各种不同意义的new和delete
  • Genymotion 虚拟机如何安装 APK?(ARM 插件安装教程)
  • (操作系统)死锁是什么 必要条件 解决方式