Python 请求没有给我提供与浏览器相同的 HTML

2024-03-14

我正在使用 Python 请求抓取 Wikia 页面。但有一个问题:requests 请求没有给我相同的 HTML因为我的浏览器具有完全相同的页面。

为了比较,这是 Firefox 给我的页面 https://www.dropbox.com/s/oxj3br97thq7ulr/yokai-browser.html?dl=0, and 这是页面请求获取 https://www.dropbox.com/s/gwnqtmrkr5zxgmn/yokai-pythonrequests.html?dl=0(下载它们进行查看 - 抱歉,没有简单的方法可以直观地托管来自另一个站点的一些 HTML)。

您会注意到一些差异(超级不友好的差异 https://www.diffchecker.com/ujzkg7cq)。有一些小事情,例如属性顺序不同等,但也有一些非常非常大的事情。最重要的是缺少最后六个<img>s,以及整个导航和页脚部分。即使在原始 HTML 中,页面看起来也像是突然被切断了。

为什么会发生这种情况,有办法解决吗?我已经想了很多事情,但都没有结果:

  • 请求标头干扰?不,我尝试复制浏览器发送的标头,User-Agent和所有的一样,1:1 变成 requests 请求,但没有任何改变。
  • JavaScript 加载 HTML 后加载内容?不。即使禁用了 JS,Firefox 也会给我提供“良好”的页面。
  • 呃……好吧……还能有什么呢?

如果您知道这种情况可能发生的方式以及解决方法,那就太棒了。谢谢你!


我有一个类似的问题:

  • 与 Python 和浏览器相同的标头
  • JavaScript 绝对排除了这个原因

为了解决这个问题,我最终更换了requests图书馆urllib.请求.

基本上,我替换了:

import requests

session = requests.Session()
r = session.get(URL)

with:

import urllib.request

r = urllib.request.urlopen(URL)

然后就成功了。

也许其中一个图书馆正在幕后做一些奇怪的事情?不确定这是否适合您。

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

Python 请求没有给我提供与浏览器相同的 HTML 的相关文章

  • 使用单个文件的 Python 日志记录(函数名、文件名、行号)

    我正在尝试了解应用程序的工作原理 为此 我将调试命令插入作为每个函数主体的第一行 目的是记录函数的名称以及向日志输出发送消息的行号 代码内 最后 由于这个应用程序由许多文件组成 我想创建一个日志文件 以便我可以更好地理解应用程序的控制流 这
  • 为什么 pandas 在简单的数学运算上比 numpy 更快?

    最近 我观察到 pandas 的乘法速度更快 我在下面的例子中向您展示了这一点 如此简单的操作怎么可能做到这一点 这怎么可能呢 pandas 数据帧中的底层数据容器是 numpy 数组 测量 我使用形状为 10k 10k 的数组 数据框 i
  • Python Numpy Reshape错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试重塑 3D numpy 数组时遇到一个奇怪的错误 数组 x 的形状为 6 10 300 我想将其重塑为 6 3000 我正
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • 如何使用我自己的自定义表单覆盖 django-rest-auth 中的表单?

    我正在使用 django rest auth 并尝试通过覆盖表单的方法之一来修复密码重置视图中的错误 尽管我已经使用不同的 django rest auth 表单成功完成了类似的操作 但我无法让它在这个表单上工作 无论我做什么 都会使用旧的
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • 如果另一列中的值为空,则删除重复项 - Pandas

    我拥有的 df Name Vehicle Dave Car Mark Bike Steve Car Dave Steve 我想从 名称 列中删除重复项 但前提是 车辆 列中的相应值为空 我知道我可以使用 df dropduplicates
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • Bokeh 中单独的节点和边缘悬停工具?

    我正在尝试为 Bokeh 中的节点和边缘获取单独的悬停工具提示 但未能使其正常工作 有人可以指出我做错了什么吗 我相信代码应该如下所示 from bokeh io import show output notebook from bokeh
  • 一个类似 dict 的 Python 类

    我想编写一个自定义类 其行为类似于dict 所以 我继承自dict 不过 我的问题是 我是否需要创建一个私有的dict我的成员 init 方法 我不明白这个有什么意义 因为我已经有了dict如果我只是继承自的行为dict 谁能指出为什么大多
  • Python:“直接”调用方法是否实例化对象?

    我是 Python 新手 在对我的对象进行单元测试时 我注意到一些 奇怪 的东西 class Ape object def init self print ooook def say self s print s def main Ape
  • Jupyter笔记本突然变得很慢

    我以前在anaconda环境下运行jupyter运行得很好 显示警告后 IOPub data rate exceeded The notebook server will temporarily stop sending output to
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 使用 Numpy 进行多维批量图像卷积

    在图像处理和分类网络中 一个常见的任务是输入图像与一些固定滤波器的卷积或互相关 例如 在卷积神经网络 CNN 中 这是一种极其常见的操作 我已将通用版本任务减少为 Given 一批 N 个图像 N H W D 和一组 K 个滤镜 K H W
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包

随机推荐

  • 如何在具有传递性的MySQL连接(同表)中选择不同的对?

    我面临着一个设计非常糟糕的数据库 其中有一个非规范化的表 X 该表 X 应该与另一个表 Y 具有 N M 关系 问题在于 这种关系目前是 1 N 而到目前为止 偷工减料的解决方案是在有多个注册表需要关联时复制条目 简化一下 我有这个 ID
  • 这些代码中哪一段在 Java 中速度更快?

    a for int i 100000 i gt 0 i b for int i 1 i lt 100001 i 答案就在那里这个网站 http www mydeveloperconnection com html JavaTrap htm
  • 关于 NaCL 加密库的问题

    我正在寻找实现加密系统的库 并对使用 NaCl 网络和密码学库特别感兴趣盒子功能 http nacl cr yp to box html 显然 它使用对称加密 XSalsa20 用于公私加密的 Curve25519 和用于身份验证的 Pol
  • 我们如何在 Google Glass 上启用调试模式以在 Google Glass 上测试 Android 应用程序?

    我正在开发谷歌眼镜的应用程序 但我不知道如何在谷歌眼镜中启用调试模式以及如何更改谷歌眼镜上的设置 To connect ADB to Google Glass you have to turn on debug mode on the de
  • > *:first-child 和 > :first-child 之间有功能差异吗?

    编写一段代码时 我注意到在一个地方我写了 gt first child以及后来 gt first child 这两个块看起来都很实用 但是两者之间有区别吗 即使我们考虑性能 它们也是相同的 从规格 https drafts csswg or
  • 绘图和 fill_ Between 的组合图例条目

    这类似于Matlab 结合阴影误差和实线平均值的图例 https stackoverflow com questions 17617190 matlab combine the legends of shaded error and sol
  • 运行 django 教程测试失败 - 没有名为 polls.tests 的模块

    我正在使用 django 1 6 教程 但无法运行测试 我的项目 名称 mydjango 和应用程序结构 名称是 polls 在 virtualenv 中如下所示 nja 文件是由我正在使用的 ninja ide 创建的 init py m
  • 从 Scala 中的 StructType 中提取行标记架构以解析嵌套 XML

    我正在尝试使用spark xml 库将宽嵌套的XML 文件解析为DataFrame 以下是缩写的架构定义 XSD
  • matplotlib 条形图黑色 - 如何删除条形边框

    我正在使用 pyplot bar 但我绘制了很多点 以致条形的颜色始终为黑色 这是因为条形的边框是黑色的 而且条形数量太多 以至于它们都挤在一起 所以您看到的只是边框 黑色 有没有办法删除栏边框以便我可以看到预期的颜色 Set the ed
  • 将日期字符串转换为时间戳以按亚秒精度排序

    我有一个专栏date在 pySpark 数据框中 日期格式如下 2018 02 01T13 13 12 023507 我想将该列中的日期从字符串转换为时间戳 或者我可以根据日期对其进行排序的内容 到目前为止 我已经尝试过以下方法 new d
  • 删除 Airflow Scheduler 日志

    我正在使用 Docker Apache Airflow 版本 1 9 0 2 https github com puckel docker airflow https github com puckel docker airflow 调度程
  • 使用 byte[] 读取大文件会出现错误[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中对大文件 超过 2GB 进行哈希 SHA1 https stackoverflow com questions 6094306 hash sha1 large files over 2gb
  • .NET 中的时间跨度相乘

    如何在 C 中乘以 TimeSpan 对象 假设变量duration is a TimeSpan http msdn microsoft com en us library system timespan aspx 例如我想要 durati
  • 鼠标悬停在图像上带有文本的 DIV

    好吧 首先 这真的非常类似于http dribbble com http dribbble com主页 以最简单的形式 我有一个图像 我正在尝试对其进行 CSS 处理 以便当我将鼠标悬停在图像上时 会显示一个 DIV 其中包含一些文本和部分
  • 为什么 SpeechRecognizer 突然停止工作?

    我的 Android 应用程序 Xamarin 使用语音识别 这在 Android 8 11 和 12 的智能手机上运行良好 几周以来 我的应用程序的语音识别已停止在 Android 11 上运行 测试了 2 种不同的智能手机 在Andro
  • 如何在 sympy 中求解简并方程组

    我有很多方程组 其中一些未指定 我想找到一个非零解 如果存在 或报告不存在 然而 sympy 似乎在试图找到所有解决方案时停滞不前 这是一个极端的例子 from sympy import A Matrix 0 0 0 0 0 0 0 0 0
  • 确定是否有任何双精度组合从设定总和到目标值

    我在工作中遇到一个问题 让我有点困惑 我需要验证给定的药物剂量可以由药丸剂量大小的任意组合构成 例如 dose 400 0 sizes 15 0 30 0 45 0 400 不能由这些值的任何总和创建 至少我认为这是真的 但是 如果变量更改
  • Java Swing - 半透明组件

    我最近问了一个关于半透明组件因看似未正确更新而导致奇怪的工件的问题 我收到的答案导致伪像消失 但以半透明为代价 解决方案是 对于每个半透明组件 也调用 setOpaque false 函数 这样 Swing 知道它需要重绘这些组件后面的背景
  • 如何在 shell 脚本中将文件作为 stdin 传递

    我有一个 bash 脚本 当像这样调用时可以工作 stats sh rows test file 该程序主要计算行平均值和中位数以及列平均值和中位数 现在对于程序 我想将文件作为标准输入传递 但是当我运行这段代码时它会打印 you have
  • Python 请求没有给我提供与浏览器相同的 HTML

    我正在使用 Python 请求抓取 Wikia 页面 但有一个问题 requests 请求没有给我相同的 HTML因为我的浏览器具有完全相同的页面 为了比较 这是 Firefox 给我的页面 https www dropbox com s