简单爬取——爬取电影列表页

简介: 简单的爬取

基础配置

导入相关包并设置爬取的路径和基本信息
import multiprocessing

import requests
import logging
import re
from urllib.parse import urljoin
logging.basicConfig(level=logging.INFO,format="%(asctime)s-%(levelname)s:%(message)s")
BASE_URL="https://ssr1.scrape.center"
TOTAL_PAGE=10

爬取源代码方法

def scrape_page(url):

logging.info("scraping %s...",url)
try:
    response=requests.get(url)
    if response.status_code==200:
        return response.text
    logging.error("get invalid status code %s while scraping %s",response.status_code,url)
except requests.RequestException:
    logging.error("error occurred while scraping %s",url,exc_info=True)

解析:传入一个路径参数,根据参数进行请求,返回html文件的源码。

定义列表页的爬取方法

def scrape_index(page):

index_url=f'{BASE_URL}/page/{page}'
return scrape_page(index_url)

根据网站可以观察出网站的分页是基本路径+page+页码数,这样就可以获取到所有的路径。

解析列表页的方法

def parse_index(html):

pattern=re.compile('<a.*?href="(.*?)".*?class="name">')
items=re.findall(pattern,html)
if not items:
    return []
for item in items:
    detail_url=urljoin(BASE_URL,item)
    logging.info('get detail url %s',detail_url)
    yield detail_url

接受一个html代码,然后定义一个提取标题超链接的正则表达式,我们使用.?来进行非贪婪通用匹配任意字符,在href属性的引号之间使用了分组匹配(.?)正则表达式,这样我们可以在href中获取href中的值,再调用 re库中的findall方法,传入构造的pattern对象,第二个参数传入html,这样便会得到匹配的结果,并赋值为items,如果item为空。这样我们可以得到详情页的url

相关文章
地理编码与反地理编码
地理编码与反地理编码
772 0
地理编码与反地理编码
|
2月前
|
监控 算法 API
拼多多API团购活动自动化:拼单成功率暴涨的幕后技术解析
本方案通过API自动化引擎破解传统团购效率低、响应慢、数据分散等问题,实现库存、价格、成团的实时联动。实战数据显示,成团时效提升74%,拼单成功率高达92%,人力成本下降80%。某生鲜商家接入后,月GMV突破500万元,成团率高达98.3%。API赋能团购,开启电商效率新纪元。
137 0
|
5月前
|
PyTorch API 算法框架/工具
DeepSeek 部署方式与技术实践
DeepSeek的部署灵活性使其在多个领域大放异彩,但需根据场景权衡性能、成本与安全性。随着工具生态的完善与行业方案的沉淀,2025年将成为AI大模型落地关键年。开发者应持续关注MoE、COT等技术创新,结合自身需求选择最优部署策略。
340 1
|
8月前
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
405 0
一文彻底搞定C语言的表达式和语句
|
11月前
|
人工智能 自然语言处理 测试技术
苹果一篇论文得罪大模型圈?Transformer不会推理,只是高级模式匹配器!所有LLM都判死刑
苹果公司发布论文《GSM-Symbolic: Understanding the Limitations of Mathematical Reasoning in Large Language Models》,质疑大型语言模型(LLM)在数学推理方面的能力。尽管LLM在GSM8K等测试中表现良好,但在新基准测试GSM-Symbolic中,其准确率随数值变化而显著下降,表明LLM可能依赖于记忆和模式匹配而非真正的数学理解。这一发现引发了AI领域的广泛讨论。
174 5
|
11月前
|
芯片
浮动CPU和定点CPU的主要区别是什么
浮动CPU和定点CPU的主要区别在于处理数据的方式不同。浮动CPU支持浮点运算,能高效处理小数和高精度计算;而定点CPU仅支持整数运算,适用于对精度要求不高的场景。
|
11月前
|
前端开发 开发者
CSS中的长度单位详解
通过合理选择和组合使用不同的长度单位,开发者可以实现高效、灵活和响应式的Web布局设计。以上详解希望能帮助你更好地理解和应用CSS中的长度单位,提高页面的表现力和可维护性。
295 3
|
12月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
监控 数据可视化 前端开发
基于python django的电商数据分析系统,包括大屏和登录
本文介绍了一个基于Python Django框架开发的电商数据分析系统,该系统具备大屏展示功能和用户登录机制,旨在帮助电商企业实时监控和分析销售数据,支持多维度数据分析和趋势预测。
323 0
基于python django的电商数据分析系统,包括大屏和登录
|
SQL JSON 数据库
如何创建DataFrame?
如何创建DataFrame?
417 1