Scrapy process_links 和 process_request 的示例代码

2023-11-27

我是 Scrapy 的新手,我希望有人能给我一些很好的示例代码,说明何时 process_links 和 process_request 最有用。我看到 process_links 用于过滤 URL,但我不知道如何编码。

谢谢。


你的意思是scrapy.spiders.Rule最常用于scrapy.CrawlSpider

它们的功能与名称差不多,或者换句话说,它们在提取链接和处理/下载之间充当中间件。

process_links位于链接被提取并转换为 request 之间。有一些很酷的用例,仅举几个常见的例子:

  1. 过滤掉一些您不喜欢的链接。
  2. 手动进行重定向以避免错误的请求。

例子:

def process_links(self, link):
    for link in links:
        #1
        if 'foo' in link.text:
            continue  # skip all links that have "foo" in their text
        yield link 
        #2
        link.url = link.url + '/'  # fix url to avoid unnecessary redirection
        yield link

process_requests位于刚刚发出的请求和下载之前之间。它与以下共享一些用例process_links但实际上可以做一些其他很酷的事情,例如:

  1. 修改标头(例如cookie)。
  2. 根据 url 中的某些关键字更改回调等详细信息。

example:

def process_req(self, req):
    # 1
    req = req.replace(headers={'Cookie':'foobar'})
    return req
    # 2
    if 'foo' in req.url:
        return req.replace(callback=self.parse_foo)
    elif 'bar' in req.url:
        return req.replace(callback=self.parse_bar)
    return req

您可能不会经常使用它们,但这两个在某些情况下可能是非常方便和简单的快捷方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy process_links 和 process_request 的示例代码 的相关文章

  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何计算 pandas datetime 对象的均值和方差?

    如何计算 YYYY MM DD 形式的 python 日期时间对象的汇总统计数据 均值和标准差 我想对具有不同 ID 的不同日期时间对象组执行此操作 数据如下 import datetime as dt df pd DataFrame Da
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • C# ASP.NET 页面离开事件?

    我正在寻找一个会触发的事件或一种判断用户是否离开页面的方法 导航到另一个页面或完全关闭该页面 通过引发的事件这可能吗 本身不在 ASP NET 中 您必须编写一些前端 JavaScript 才能使用类似的方法来执行此操作window onb
  • 使用 Scikit Learn SVM 准备文本分类数据

    我正在尝试应用 Scikit learn 中的 SVM 对我收集的推文进行分类 因此 将有两个类别 将它们命名为 A 和 B 目前 我将所有推文分类为两个文本文件 A txt 和 B txt 但是 我不确定 Scikit Learn SVM
  • 根据日期选择最近 5 行

    我已经有一段时间没有接触 PHP 了 并尝试选择数据库中最近的 5 个条目并将它们打印到屏幕上 我看到不再推荐使用 mysql 命令并使用 PDO gt mysql 代替 我的查询是这样的 SELECT id title date auth
  • Windows堆块头解析和大小计算

    如何根据从内存读取的原始字节计算堆块大小 我尝试了下面的事情 0 001 gt heap Index Address Name Debugging options enabled 1 00500000 2 00280000 3 008f00
  • Python中如何获取实例变量?

    Python中是否有内置方法来获取所有类实例变量的数组 例如 如果我有以下代码 class hi def init self self ii foo self kk bar 我有办法做到这一点 gt gt gt mystery method
  • 准备语句是否可以保护您的数据库?

    我知道你们中的一些人可能会结束这个问题 但我的问题是由你们和你们的回答提出的 我正在阅读过去两个小时有关 SQL 注入以及如何保护数据库的问题和解答 我看到的大量网页和教程也是如此 我发现一半的人声称准备语句确实可以保护您的数据库 而另外
  • Visual Studio 2010:复制类的最简单方法?

    有没有一种简单的方法可以用不同的名称复制一个类 不确定这是否可以作为最简单的方法 但如果您有锐锐 你可以使用它的复印类型重构以复制类 接口 结构 并控制副本所在的命名空间并在副本中命名 这意味着如果您复制具有 5 个构造函数的类 则副本将全
  • typescript 4.4.4:tsconfig 路径未按预期解析

    我的 tsconfig json compilerOptions target ES2018 module CommonJS lib ESNext ESNext AsyncIterable skipLibCheck true sourceM
  • 致命:用户“postgres”的密码身份验证失败

    在 ubuntu 中收到此错误消息 在 pg hba conf 文件中 我尝试在不同时间使用 ident peer trust md5 但没有成功 请帮忙 在你的 pg hba conf 中 IPv4 local connections T
  • 如何在 Axis2 客户端中正确使用 WS-Addressing?

    全部 我正在尝试编写一个在 Axis2 1 5 中调用 Web 服务客户端的 Junit 测试 但我对如何准确地将其设置为使用 WS Addressing 感到困惑 我使用 wsdl2java 生成了一个客户端存根 并且使用 axis2 二
  • itextsharp 测量块宽度/高度

    我正在尝试使用 iTextSharp 进行一些精确对齐 但我一直达不到要求 因为我无法找到一种方法来获取块或段落的宽度 高度值 如果我创建一个具有特定字体 大小和文本的段落 那么它的尺寸应该是已知的 对吗 我知道默认的左 右 中心对齐对我来
  • 在 ASP.NET Core 中将 Razor 视图渲染为字符串

    I use 剃刀引擎用于解析我的 MVC 6 项目中的模板 如下所示 Engine Razor RunCompile File ReadAllText fullTemplateFilePath templateName null model
  • 模块 t 导入意外值 null

    在将我的应用程序 Angular2 express starter 的一个分支 部署到 Heroku 时 我遇到了这个奇怪的问题 https totalautosapp herokuapp com 起初我以为是 Heroku 但我将它部署到
  • 这种形式的方法调用仅允许类方法错误

    我不断收到此错误 在FGetZoneData I have var SelectedDept String implementation procedure TFGetZoneDept GetClick1 Sender TObject va
  • 限制选择列表的初始宽度

    我有一个选择列表 其中一些客户为他们输入了非常长的选项 这破坏了设计 我想知道是否有一种方法可以在选择小部件上设置固定宽度 但它生成的下拉菜单仍然足够宽以显示所有选项 由于您没有指定所需的浏览器支持 因此这可能是也可能不是解决方案 这适用于
  • 脚本是否有一种相当简单的方法来判断(从上下文)“她”是否是所有格代词?

    我正在编写一个脚本来反转一段文本中的所有性别 因此所有性别单词都会被交换 男人 与 女人 交换 她 与 他 交换 等等 但是存在歧义 因为是否应该用 他 或 他的 代替 她 好的 让我们像语言学家一样看待这个问题 我在这里大声思考 Her
  • Android,布局中的透明子GLSurfaceView? [复制]

    这个问题在这里已经有答案了 可能的重复 Android OpenGL ES 透明背景 我想在正常的 2d ui 布局屏幕上显示一些 3d 对象 2d ui 屏幕有背景图像 GLSurfaceView 是内容布局的子级 我在 ApiDemos
  • NSUserDefaults 是否会通过更新 Appstore 中的应用程序而持续存在?

    是这样吗 当您向 App Store 上的应用程序提交更新时 NSUserDefaults 是否会重置 或者是否会重置 我的应用程序在更新时崩溃 但在完全下载时不会崩溃 所以我试图确定更新的会话与新下载的会话中可能有什么不同 干杯 缺口 除
  • 如何使用 dplyr 将累积列添加到 R 数据帧?

    我有同样的问题这个帖子 但我想用dplyr 使用 R 数据框 例如 df lt data frame id rep 1 3 each 5 hour rep 1 5 3 value sample 1 15 如何添加与 id 匹配的累积和列 W
  • Scrapy process_links 和 process_request 的示例代码

    我是 Scrapy 的新手 我希望有人能给我一些很好的示例代码 说明何时 process links 和 process request 最有用 我看到 process links 用于过滤 URL 但我不知道如何编码 谢谢 你的意思是sc