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

简介: 简单的爬取

基础配置

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

相关文章
|
存储 数据可视化 C语言
[iOS研习记]聊聊iOS中的Mach-O
Mach-O的全称为Mach Object,是OS X与iOS上的一种可执行文件格式。Mach本身指一种操作系统的微内核标准,被用于OS X与iOS系统的内核中。相信对于移动端的iOS开发者来说,对Mach-O文件一定不陌生,我们编译打包的iOS IPA文件,内部其实就有一个可执行的Mach-O文件,我们开发的framework和.a等动态库静态库中,也会包含Mach-O文件,本篇文章,我们就来详细看看Mach-O中究竟放的是什么,Mach-O的结构是怎样的。
1108 0
地理编码与反地理编码
地理编码与反地理编码
803 0
地理编码与反地理编码
|
9月前
|
canal 编解码 运维
飞天洛神云网络再度入选通信顶会 SIGCOMM'24
飞天洛神云网络再度入选通信顶会 SIGCOMM'24
323 12
|
SQL 存储 数据采集
ARMS在APM工具选型中的实践
当前的系统在数字化转型需求以及互联网架构实施的影响下,越来越普遍地使用了微服务架构,我们在享受微服务带来的好处(开发效率高, 独立部署, 水平扩展, 故障与资源隔离等等)外,也带来测试,事务,应用监控等各方面的困难。
4068 92
ARMS在APM工具选型中的实践
|
数据安全/隐私保护
注销备案须知及操作步骤
若您的网站已经在阿里云成功备案,现要停止该网站的服务,需注销主体或网站在工信部的备案信息。
3515 0
|
网络协议 安全 机器人
互联网的发展简史—web
前言:互联网是我现在生活所离不开的一个东西,但是你知道互联网的前世今生吗?本文将讲解互联网的发展史,以及很火的元宇宙概念。
2778 1
 互联网的发展简史—web
|
存储 人工智能 达摩院
2022钉钉发布会|云钉低代码新模式、新能力、新机遇
宜搭重磅发布酷应用工厂、连接器、AI+FaaS扩展等新功能!
1665 0
2022钉钉发布会|云钉低代码新模式、新能力、新机遇
|
Java 开发者 Spring
Gateway 内置路由断言|学习笔记
快速学习 Gateway 内置路由断言
Gateway 内置路由断言|学习笔记
不要傻乎乎的去找不同了,一起来用代码完成“找不同”游戏吧
不要傻乎乎的去找不同了,一起来用代码完成“找不同”游戏吧
915 0
不要傻乎乎的去找不同了,一起来用代码完成“找不同”游戏吧
|
前端开发 JavaScript Go
CodeSandbox(基于 React 的在线代码沙盒平台)
Open ReactExplore ExamplesCodeSandbox is an online editor that helps you create web applications, from prototype to deployment.
1491 0