Python Scrapy 301 重定向

2023-12-11

在抓取给定网站时,我在打印重定向网址(301 重定向后的新网址)时遇到了一些问题。我的想法是只打印它们而不刮掉它们。我当前的代码是:

import scrapy
import os
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class MySpider(CrawlSpider):
    name = 'rust'
    allowed_domains = ['example.com']
    start_urls = ['http://example.com']

    rules = (
        # Extract links matching 'category.php' (but not matching 'subsection.php')
        # and follow links from them (since no callback means follow=True by default).
        # Extract links matching 'item.php' and parse them with the spider's method parse_item
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        #if response.status == 301:
        print response.url

但是,这不会打印重定向的 url。任何帮助将不胜感激。

谢谢。


要解析任何不是 200 的响应,您需要执行以下操作之一:

项目范围

您可以设置设置HTTPERROR_ALLOWED_CODES = [301,302,...] in settings.py文件。或者,如果您想为所有代码启用它,您可以设置HTTPERROR_ALLOW_ALL = True反而。

蜘蛛范围

Add handle_httpstatus_list参数给你的蜘蛛。在你的情况下类似:

class MySpider(scrapy.Spider):
    handle_httpstatus_list = [301]
    # or 
    handle_httpstatus_all = True

请求范围

你可以设置这些meta您的请求中的关键信息handle_httpstatus_list = [301, 302,...] or handle_httpstatus_all = True对全部:

scrapy.request('http://url.com', meta={'handle_httpstatus_list': [301]})

要了解更多信息,请参阅HttpError中间件

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

Python Scrapy 301 重定向 的相关文章

随机推荐

  • 用不同颜色绘制线

    import pandas as pd import matplotlib pyplot as plt import numpy as np df1 pd DataFrame np random randint 0 15 size 15 1
  • iPhone 中真正的模态 UIAlertView?

    我需要运行一些取决于用户决定的验证 例如 如果批准超出支出限额的购买 并在失败时拒绝 完成 操作 然而 看起来不可能像其他语言那样有真正的模态操作 如 showmessage alert 等 并且一切都是由委托完成的 但后来我不知道该怎么办
  • 未找到 javac1.8 类

    我安装了两个jdk jdk 1 5和jdk 1 8 我有以下 Ant build xml 配置文件
  • 在 Google App Engine for Python 中使用 xlsxwriter

    我想知道是否有人知道如何在 Google App Engine for Python 中使用 xlsxwriter 该文档仅显示如何打开 写入和保存到文件 我已经研究过使用 StringIO 用于其他 Excel 库的解决方法 但它们似乎无
  • 从哪里上传应用程序二进制文件在应用程序商店

    我已按照所有步骤在 https itunesconnect apple com WebObjects iTunesConnect woa 上上传我的第一个应用程序 最后我上传了大图和屏幕截图 我无法选择上传二进制文件 现在申请状态为 等待上
  • 在 Bash 中锁定文件

    我有一个问题要找到一个在 bash 中锁定文件的好概念 基本上我想实现以下目标 锁定文件 读入文件中的数据 多次 用数据做事 将新内容写入文件 不一定到最后 解锁该文件 对我来说 用集群执行此操作似乎是不可能的 因为文件描述符只会移动一次到
  • SQL 按查询中指定的顺序排序

    假设我有一个查询 select from Clauses where id in 0 2 5 1 3 我实际上希望按照在 where 子句中指定的顺序返回行 ID 的顺序会因查询而异 并且顺序没有模式 我知道可以改变数据模型 创建临时表等
  • 切片插入问题,L[1:1]

    练习一些Python 这是一种很容易掌握的语言 I have gt gt gt L 1 2 3 4 gt gt gt L 1 1 1 2 3 gt gt gt L 1 1 2 3 2 3 4 所以实际上在第二行L 1 1 是空列表 但是py
  • 自动 Beta 版本与 crashlytics

    我的 Android 应用程序有一个包含 crashlytics start 的库 我只将 Crashlytics jar 设置为 Library 项目的依赖项 构建成功 我也在 app gt build gradle 文件中配置了多种风格
  • 如何将 iCloud 权限添加到应用程序 ID?

    如何将 iCloud 权利添加到应用程序 ID 我只想在 iCloud 中使用键值存储 我通过编辑现有的 iOS 应用程序 ID 启用了 iCloud 然后 生成新的配置文件 将其安装在 XCode 中 我添加了我的应用程序包 IDcom
  • -32768 不适合 16 位有符号值

    我正在使用 PCLint v 9 00h 在我的代码中 我有以下内容 其中 S16 是带符号的 16 位 S16 temperatureResult 32768 除非我的大脑停止工作 否则这是适合这种类型的最小值 但我收到了 违反 MISR
  • 从多个值列表中查找所有不冲突的值组合

    我有以下数组 其中包含值数组 array array array 1 2 array a b c array x y 可以有任意数量的数组 并且数组可以包含任意数量的值 我目前有一段代码 它将生成所有组合 其中从每个数组中获取一个值 例如
  • 如何获取PHP运行的操作系统?

    为了构建 unix dos 特定的脚本 我需要知道我使用的是哪种操作系统 我如何获得这些信息 phpinfo 告诉我更多 但不太清楚我是否在 unix 上运行 PHP有很多预定义常量这通常很有用 Here PHP OS就是您正在寻找的人 例
  • 如何从存储过程发送邮件?

    我需要从存储过程发送邮件 我知道这是可能的 我是从这个研究的link 我如何在 SMTP 服务器上进行身份验证 你有什么主意吗 Thanks 您可以使用 SQL 数据库邮件 See 数据库邮件和 SQL 邮件存储过程 Transact SQ
  • 如何使用pygtk拖动图像

    如何使用 pygtk 拖动 移动图像 Here是有人这样做的视频 但是该人没有给出源代码 这是一个小演示 抱歉 我不记得它到底来自哪里 它与此处找到的非常相似 http www pygtk org pygtk2tutorial exampl
  • elasticsearch 分割文档摄取处理器

    弹性搜索提供了ingest在索引文档时转换文档的机制 处理器可以转换字段 在索引文档中添加和删除字段 对于极少数情况 甚至可以编写自己的转换插件 然而 我找不到为单个输入文档生成多个输出文档的可能性 这是否可以使用ingest弹性模块 我想
  • 我的程序如何检测它是否在特定域上运行?

    我需要根据当前登录用户的位置限制应用程序的特定功能 由于我必须在 Delphi 中实现此逻辑 因此我不希望过度使用完整的 Active Directory LDAP 查询 我当前的想法是利用 DsGetDcName 并使用 DOMAIN C
  • 图像未存储在 sqlite 中

    我制作了一个演示 它将图像存储到数据库中 目前我没有收到任何错误 但我的图像没有存储在 sqlite 数据库中 请看下面的代码并告诉我我的错误在哪里 数据库管理类 sqlite3 sqlite3DatabaseObject sqlite3
  • 如何在工作流程中仅运行失败的会话

    在工作流程中 存在并行和顺序连接的会话 假设一些并行和顺序模式的会话失败 如何仅使用失败的会话重新启动工作流程 我如何在 Informatica 中进行设计 为工作流程打开 出错时暂停 为工作流程中的每个会话启用 恢复时重新启动 现在 如果
  • Python Scrapy 301 重定向

    在抓取给定网站时 我在打印重定向网址 301 重定向后的新网址 时遇到了一些问题 我的想法是只打印它们而不刮掉它们 我当前的代码是 import scrapy import os from scrapy spiders import Cra