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

简介: 简单的爬取

基础配置

导入相关包并设置爬取的路径和基本信息
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

相关文章
|
存储 Linux API
huggingface.datasets无法加载数据集和指标的解决方案
本文是作者在使用huggingface的datasets包时,出现无法加载数据集和指标的问题,故撰写此博文以记录并分享这一问题的解决方式。以下将依次介绍我的代码和环境、报错信息、错误原理和解决方案。首先介绍数据集的,后面介绍指标的。
huggingface.datasets无法加载数据集和指标的解决方案
|
SQL 运维 资源调度
大数据CDH集群安装实录
通过ClouderaManager管理CDH集群,从而为大数据集群做统一管理,在整个大数据集群运维的角度来说,提供了很多便利点。
692 0
大数据CDH集群安装实录
|
算法 5G 芯片
Beam Failure Detection
正如上篇所述NR中所有的上下行信道的发送和接收都是基于波束。基站通过对信道质量的测量来动态选择UE和基站之间波束的方向和频率,进而完成通信。NR中无线链路检测可以分为两种,一种是4G中常见的radio link monitoring,失败后对应的就是radio link failure ,主要是RRC层控制触发;另一种就是这篇提及beam 相关的Beam Failure Detection(BFD),主要是MAC层控制触发。
|
Java Maven
IDEA创建maven项目失败:pom文件为空,没用src目录,右侧没有maven结构
IDEA创建maven项目失败:pom文件为空,没用src目录,右侧没有maven结构
792 0
IDEA创建maven项目失败:pom文件为空,没用src目录,右侧没有maven结构
|
算法 Java
都说 HashMap 是线程不安全的,到底体现在哪儿?
前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。 1.jdk1.7中的HashMap 在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:
395 0
都说 HashMap 是线程不安全的,到底体现在哪儿?
|
8月前
|
5G
全双工与半双工技术解析及其应用场景
本文对比了全双工和半双工两种通信模式。全双工允许双向同时传输,提高效率和实时性,适用于手机通信和5G网络,但成本较高。半双工则在单一时段内单向传输,适合共享LAN和TD-SCDMA,实现简单成本低,但实时性较差。选择模式需依据应用场景和需求平衡成本与性能。
269 4
|
9月前
|
缓存 搜索推荐 机器人
HTTP 状态码完整指南
HTTP 状态码完整指南
907 0
|
Java 容器 Spring
SpringBoot定时任务源码分析
写作目的 最近看了一篇博客 “Spring Boot实现定时任务的动态增删启停” ,其实实现这个需求的前提是你要搞明白 定时任务 的实现原理,这样你才有可能实现定时任务的动态增删启停,所以下面从源码的角度跟 SpringBoot定时任务原理。
277 0
SpringBoot定时任务源码分析
|
存储 Java
Java基础-21总结字符流,IO流编码问题,实用案例必做一遍
你需要的是什么,直接评论留言。 获取更多资源加微信公众号“Java帮帮” (是公众号,不是微信好友哦) 还有“Java帮帮”今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:字符流(掌握)  // 字节流读取中文可能出现的小问题(所以用字
1812 0
|
3天前
|
人工智能 自然语言处理 Shell
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
157353 24
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。

热门文章

最新文章