使用一个python脚本抓取大量网站【2/3】

news2024/9/25 21:30:22

一、说明

        我如何使用一个 Python 脚本抓取大量网站,在第 2 部分使用 Docker ,“我如何使用一个python脚本抓取大量网站”统计数据。在本文中,我将与您分享:

  • Github存储库,您可以从中克隆它;
  • 链接到 docker 容器,可以帮助您使用一个命令抓取内容;
  • 一些用例以及如何处理它们;

您可以从我关于实用网页抓取的其他博客文章中以易于查看的格式找到代码。

二、Repo 和Updates

        进行版本控制对于对重构过程进行适当的控制是必要的。这也是一种比 Gist 脚本更方便的共享代码库的方式。参考地址:

GitHub - destilabs/webtric

通过在 GitHub 上创建一个帐户来为目标/网站开发做出贡献。

github.com

        默认情况下,此存储库允许您解析著名的抓取sandbox(沙盒) quotes.toscrape.com。为了更好地理解脚本以及如何根据自己的目的修改它,请阅读第 1 部分。

        您可以通过 shell 脚本执行立即在本地开始使用它:

./scripts/quotes.sh ./outputs/quotes local 

./scripts/quotes.sh ./outputs/quotes remote 

        我鼓励您阅读此脚本的列表并附上注释,以更好地了解它的作用:参考地址:

网站/语录.sh在主·Destilabs/webtric

此文件包含双向 Unicode 文本,其解释或编译方式可能与下面显示的内容不同...

github.com

三、Docker登场

        虽然这个解决方案似乎对许多读者很有帮助,但我可以想象它在安装过程中并非无痛。Chromedriver 是一个令人讨厌的工具,需要定期更新和对操作系统配置细微差别的“初学者+”理解。另一方面,Docker 只需要知道运行容器的正确命令。

描述这个容器可能没有比只显示它的 docker-compose 文件更好的方法了:参考地址:

webtric/docker-compose.yml at main ·Destilabs/webtric

此时无法执行此操作。您使用其他选项卡或窗口登录。您在另一个选项卡中注销或...

github.com

        让我们也一步一步地看一遍:

        Chromedriver 和 Selenium Hub 是独立的服务。它们将在其相应的端口上启动并运行。在剧本中等待他们起床至关重要。

        Webtric服务(帖子的主人公)将在飞行中构建,然后等待上面的两个服务。您会在日志中看到一些错误,但它应该赶上并开始解析。

Webtric 的预期输出

要运行 docker-compose 文件,请执行两个命令:

export APP=./scripts/quotes.sh
docker-compose up 

        Jupyter 服务将被提升为可以立即访问解析的数据。输入 http://localhost:8888/lab?token=webtric 并创建新笔记本:

Pick Python 3 (ipykernel)

这是一个简洁的脚本,用于访问“/home/webtric”卷中最后一个抓取的文件:

import pandas as pd
from os import listdir
from os.path import isfile, join

VOLUME = "/home/webtric"
files = [f for f in listdir(VOLUME) if isfile(join(VOLUME, f))]

print('List of all parsed files')
print('\n'.join(files))

df = pd.read_csv(join(VOLUME, files[-1]))
df.head()

这是它最终应该的样子

表明你成功了!

四、使用案例

        首先,我做这个项目只是为了好玩和学习,你也可以。从实际的角度来看,在 docker 中使用 Webtric 对于扩展很有用,因为现在可以通过生成越来越多的容器来并行抓取。不过,请记住刮擦的黄金法则:

对要解析的网站保持温和

        现在托管您的蜘蛛也更容易,因为大多数现代云托管服务提供商对容器都很友好。我将准备一个关于如何在不久的将来使其工作的教程,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件定制开发平台:管好数据资源,降本提质!

在如今的发展时代,利用好优质的软件定制开发平台,定能给广大用户提高办公协作效率,创造可观的市场价值。作为服务商,流辰信息一直在低代码市场勤于钻研,不断努力,保持敏锐的市场眼光和洞察力,为…

Modelsim恢复编辑器的解决方案——只能将外部编辑器删除后,重新匹配编辑器

Modelsim恢复编辑器的解决方案——只能将外部编辑器删除后,重新匹配编辑器 1,Modelsim和Questasim是相互兼容的,配置的编辑器变成了sublime,且更换不了编辑器2,解决问题的方案,还是没得到解决3,…

Markdown和LaTex的学习

下载Typora Typora(免费版) 轻量级Markdown编辑器 - 哔哩哔哩 (bilibili.com) 部分编辑器需要进入设置 中开启特定的 Markdown 语法,例如 Typora 就需要手动开启 高亮 功能 Typora的使用: Typora中各种使用 - lyluoye - 博客园 (cnblogs.com) 标题 #…

数据库的存储过程、触发器、事件 实现(超精简)

一 存储过程 什么是存储过程 : 自己搜 和代码写的有什么区别: 没区别 为什么用存储过程: 快 例子 -- 创建 test名字的存储过程 CREATE PROCEDURE test(in idin INT) BEGIN-- 创建变量declare id int default 0;declare stopflag int defau…

爬虫015_python异常_页面结构介绍_爬虫概念介绍---python工作笔记034

来看python中的异常 可以看到不做异常处理因为没有这个文件所以报错了 来看一下异常的写法

【C++】C++回调函数基本用法(详细讲解)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【Flutter】【packages】simple_animations 简单的实现动画

package:simple_animations 导入包到项目中去 可以实现简单的动画, 快速实现,不需要自己过多的设置 有多种样式可以实现[ ] 功能: 简单的用例:具体需要详细可以去 pub 链接地址 1. PlayAnimationBuilder PlayAnima…

winform控件 datagridview分页功能

主要实现页面跳转、动态改变每页显示行数、返回首末页、上下页功能,效果图如下: 主代码如下: namespace Paging {public partial class Form1 : Form{public Form1(){InitializeComponent();}private int currentPageCount;//记录当前页行数…

ApplicationContext在Spring Boot中是如何创建的?

一、ApplicationContext在Spring Boot中是如何创建的? 1. SpringApplication ApplicationContextFactory有三个实现类,分别是AnnotationConfigReactiveWebServerApplicationContext.Factory、AnnotationConfigServletWebServerApplicationContext.Facto…

nginx动态加载配置文件的方法

1. main函数调用ngx_get_options函数 2. ngx_get_options(int argc, char *const *argv)中会解析用户输入命令。 case ‘s’: if (*p) { ngx_signal (char *) p; } else if (argv[i]) {ngx_signal argv[i];} else {ngx_log_stderr(0, "option \"-s\" requi…

将数组按照某个对象分类,结果值的json的值按照value递增排序

const arr [ { value: 532, lable: 1, type: “a” }, { value: 132, lable: 24, type: “b” }, { value: 432, lable: 13, type: “b” }, { value: 1812, lable: 5, type: “b” }, { value: 1932, lable: 8, type: “c” }, { value: 132, lable: 4, type: “a” }, { val…

CNN经典网络模型之GoogleNet论文解读

目录 1. GoogleNet 1.1 Inception模块 1.1.1 1x1卷积 1.2 辅助分类器结构 1.3 GoogleNet网络结构图 1. GoogleNet GoogleNet,也被称为Inception-v1,是由Google团队在2014年提出的一种深度卷积神经网络架构,专门用于图像分类和特征提取任…

一个竖杠在python中代表什么,python中一竖代表什么

大家好,小编来为大家解答以下问题,一个竖杠在python中代表什么,python中一竖代表什么,今天让我们一起来看看吧! 维基百科页面是错误的,我已经更正了。|和&不是布尔运算符,即使它们是急切运算…

Intune 应用程序管理

由于云服务提供了增强的安全性、稳定性和灵活性,越来越多的组织正在采用基于云的解决方案来满足他们的需求。这正是提出Microsoft Endpoint Manager等解决方案的原因,它结合了SCCM和Microsoft Intune,以满足本地和基于云的端点管理。 与 Int…

uni——月份选择(横向滑动tab,横向滚动选择日期)

案例展示 案例代码 已封装成组件使用 <template><view><view class"tabBox"><scroll-view scroll-x"true" :scroll-left"scrollLeft" :scroll-with-animation"true"><view class"box"><…

AtcoderABC313场

A - To Be SaikyoA - To Be Saikyo 题目大意 有N个人&#xff0c;编号从1到N。每个人有一个整数分数&#xff0c;称为编程能力&#xff1b;第i个人的编程能力是Pi分。人1需要多少分才能成为最强者&#xff1f;换句话说&#xff0c;最小非负整数x是多少&#xff0c;使得对于所有…

10万SUV大魔王?市场再添新成员,北汽新魔方正式上市,鸿蒙加持

根据报道&#xff0c;北京汽车宣布新一款名为新魔方的车型已经在位于北京汽车株洲基地的超级工厂开始大规模生产。这款车型是继北京新EU5 PLUS之后的又一重要产品&#xff0c;被认为将对10万级SUV市场带来颠覆性影响。 据报道&#xff0c;北汽魔方是首款搭载鸿蒙HarmonyOS智能操…

【UE4 RTS】05-Fixing Camera Movement

前言 本篇实现了两个功能&#xff1a;一是解决CameraPawn旋转后&#xff0c;前进方向没变的问题&#xff1b;二是玩家可选择提高CameraPawn的移动速度 效果 一、解决CameraPawn旋转后&#xff0c;前进方向没变的问题 二、玩家可提高CameraPawn移动速度 步骤 一、解决Camera…

IDEA离线安装插件

一、背景 有时&#xff0c;在ideal中我们无法获取到插件&#xff0c;可能是因为内网或者无法访问插件库等原因&#xff0c;此时我们需要离线安装插件 IDEA离线仓库&#xff1a;https://plugins.jetbrains.com/ 二、步骤 2.1 下载插件&#xff1a;https://plugins.jetbrains.…

20230809在WIN10下使用python3处理Google翻译获取的SRT格式字幕(DOCX)

20230809在WIN10下使用python3处理Google翻译获取的SRT格式字幕&#xff08;DOCX&#xff09; 2023/8/9 19:02 由于喜欢看纪录片等外文视频&#xff0c;通过剪映/PR2023/AUTOSUB识别字幕之后&#xff0c;可以通过google翻译识别为简体中文的DOCX文档。 DOCX文档转换为TXT文档之…