为什么 urllib.request.urlopen 有时不起作用,但浏览器可以工作?

2024-02-13

我正在尝试使用 Python 下载一些内容urllib.request。以下命令会产生异常:

import urllib.request
print(urllib.request.urlopen("https://fpgroup.foreignpolicy.com/foreign-policy-releases-mayjune-spy-issue/").code)

result:

...
HTTPError: HTTP Error 403: Forbidden

如果我使用 firefox 或 links(命令行浏览器),我会得到内容和状态代码 200。如果我使用 lynx,很奇怪,我也会得到 403。

我希望所有方法都能起作用

  1. 一样的方法
  2. 成功地

为什么事实并非如此?


该网站很可能阻止人们抓取其网站。您可以通过包含标头信息和其他内容来在基本级别上欺骗他们。请参阅此处了解更多信息。

引用自:https://docs.python.org/3/howto/urllib2.html#headers https://docs.python.org/3/howto/urllib2.html#headers

import urllib.parse
import urllib.request

url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }
headers = { 'User-Agent' : user_agent }

data = urllib.parse.urlencode(values)
data = data.encode('ascii')
req = urllib.request.Request(url, data, headers)
with urllib.request.urlopen(req) as response:
   the_page = response.read()

人们不希望脚本抓取他们的网站的原因有很多。这需要他们的带宽。他们不希望人们通过制作抓取机器人来受益(从金钱角度)。也许他们不希望您复制他们的网站信息。您也可以将其视为一本书。作者希望人们阅读他们的书,但也许他们中的一些人不希望机器人扫描他们的书,创建副本,或者机器人可能会总结它。

评论中问题的第二部分在这里回答起来过于模糊和宽泛,因为有太多固执己见的答案。

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

为什么 urllib.request.urlopen 有时不起作用,但浏览器可以工作? 的相关文章

  • Tkinter:消息小部件中锚点选项的正确值是多少?

    我一直在学习 tkinterTkinter 中的消息小部件 https python course eu tkinter message widget in tkinter php at Python 课程和教程 https python
  • 通过 boto3 承担 IAM 用户角色时访问被拒绝

    Issue 我有一个 IAM 用户和一个 IAM 角色 我正在尝试将 IAM 用户配置为有权使用 STS 承担 IAM 角色 我不确定为什么收到 访问被拒绝 错误 Details IAM 角色 arn aws iam 123456789 r
  • LibreOffice 并行将 .docx 转换为 .pdf 效果不佳

    我有很多 docx 文件需要转换为 pdf 将它们一一转换需要很长时间 所以我编写了一个 python 脚本来并行转换它们 from subprocess import Popen import time import os os chdi
  • 定义Python源代码编码的正确方法

    PEP 263 http www python org dev peps pep 0263 定义如何声明Python源代码编码 通常 Python 文件的前两行应以以下内容开头 usr bin python coding
  • 如何在python中附加两个字节?

    说你有b x04 and b x00 你如何将它们组合起来b x0400 使用Python 3 gt gt gt a b x04 gt gt gt b b x00 gt gt gt a b b x04 x00
  • 指示电子邮件的类型

    我有以下自动化程序 它将电子邮件发送给我自己 并添加了特定的链接 import win32com client as win32 import easygui import tkinter as to from tkinter import
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • numpy:高效执行数组的复杂重塑

    我正在将供应商提供的大型二进制数组读入 2D numpy 数组 tempfid M N load data data numpy fromfile file dirname fid dtype numpy dtype i4 convert
  • python celery -A 的无效值无法加载应用程序

    我有一个以下项目目录 azima init py main py tasks py task py from main import app app task def add x y return x y app task def mul
  • 如何在 Python 中的函数入口、内部和退出处进行日志记录

    我希望能够使用 Python 日志记录工具在我的代码中进行简单且一致的日志记录 我能够执行以下操作 我希望所有现有 未来的模块和函数都有 输入 和 完成 日志消息 我不想添加相同的代码片段来定义日志记录参数 如下所示don t want t
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • 如何在 Django Rest 框架中编写“删除”操作的测试

    我正在为 Django Rest Framework API 编写测试 我一直在测试 删除 我对 创建 的测试工作正常 这是我的测试代码 import json from django urls import reverse from re
  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • 使用标签或 href 传递 Django 数据

    我有一个包含链接的表 当单击该链接进行更多操作时 我想将一些数据传递给我的函数 my html table tbody for query in queries tr td value a href internal my func que
  • 检索 geodjango 多边形对象的边界框

    如何在 geodjango 中获取 MultiPolygon 对象的边界框 在 API 中找不到任何内容http geodjango org docs geos html http geodjango org docs geos html
  • 如何在 Seaborn 中的热图轴上表达类

    我使用 Seaborn 创建了一个非常简单的热图 显示相似性方阵 这是我使用的一行代码 sns heatmap sim mat linewidths 0 square True robust True sns plt show 这是我得到的
  • 使用 suds SOAP 库进行 HTTP 身份验证的奇怪行为

    我有一个正在运行的 python 程序 它使用 suds 通过 SOAP 获取大量数据 Web服务是通过分页功能实现的 这样我就可以抓取nnn每个 fetch 调用的行并获取下一个nnn与后续的电话 如果我使用如下代码向 HTTP 服务器进
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a

随机推荐

  • Ruby on Rails:如何检测是否通过 JSON 访问?

    我得到了一个调用控制器方法 getInfo 的 GET URL 可以通过 mydomain com getInfo json params BLAHBLAH 或 mydomain com getInfo params BLAHBLAH 调用
  • Objective-C 中的不可变对象:大 init 方法?

    我想要一个 Objective C 中具有不可变字段的对象 在 C 中 我将使用具有私有 setter 和大型构造函数的 Properties 我会在 Objective C 中使用什么 使用 property 似乎不允许我将 setter
  • 获取该月的最后一天? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 本月最后一天 https stackoverflow com questions 1686724 php last day of the month 有没有类似的功能 date gt getM
  • 如何在 matplotlib 中保存调整为对象大小的图形?

    大家好 我正在尝试保存 matplotlib 中的数字 它保存图形周围的空白 我的意思是它增加了空间 它不保存调整后的对象大小 在 Inkscape 中编辑它们非常容易 我在这个软件中进行编辑 但是当图形超过 50 个时 这就不太好了 我这
  • 为什么 boost::filesystem::path 和 std::filesystem::path 缺少运算符+?

    考虑以下关于路径分解的断言 其中每个局部变量例如stem有明显的初始化 例如auto stem path stem assert root path root name root directory assert path root nam
  • 谷歌地图绘制文物

    在开发我当前的项目时 我正在使用谷歌地图 我在地图上画了一些圆圈 并在缩放或移动地图后在地图上发现了一些伪影 但让我们看一下文档中的官方 Google Maps Circles 演示 谷歌地图圆圈简单 https google develo
  • 为表中的主键随机生成 1-999 之间的唯一数字

    我有一个问题 我不知道如何优雅地解决 背景资料 我有一张小部件表 每个小部件都分配有一个数字范围内的 ID 假设在 1 999 之间 1 999 的值作为 lower range 和 upper range 保存在我的数据库中名为 conf
  • 如何组合这两个 WordPress 搜索查询?

    我有两个搜索查询 人们以默认方式搜索与参数匹配的任何帖子标题 第二个查询设置为搜索帖子元键为 SKU 的任何帖子 就像搜索查询一样 我正在尝试组合这两个查询 以便搜索将返回标题或 sku 与搜索词匹配的任何帖子 第一个查询 args arr
  • Tensorboard 不再显示标量

    我决定更新张量板 因为它没有显示图表 在图表面板上我只能看到一个空白页 没有错误消息 现在我已经更新了图表 这是我的张量板显示的唯一内容 现在我看不到标量或直方图 我有 No scalar data was found 消息 直方图等也是如
  • Apache (EC2) 上的文件上传速度慢于用户的网络上传速度

    我有一个 EC2 实例 运行基本的 LAMP 堆栈作为 Web 服务器 用户可以通过我的网络应用程序上传照片 然后将其存储在目录中并记录在 MySQL 中 通常 这些上传速度与用户的互联网上传速度允许的速度一样快 不幸的是 多个用户报告有时
  • 在 Azure Functions 中将 F# 记录类型返回为 JSON

    我正在 F 中创建一个简单的 azure 函数 最后 我返回 JSON 格式的记录类型 我正在做这样的事情 let y Gender Woman Frequency 17 Percentage 100 0 req CreateRespons
  • 在使用 get 请求的 http 调用时将数组传递到 URLSearchParams

    浏览 WebAPI 文档URL搜索参数 https developer mozilla org en US docs Web API URLSearchParams 我没有找到任何有关将数组作为参数传递的文档 有人可以帮忙吗 事实上 你不能
  • 极坐标比 numpy 慢?

    我正在考虑使用polars代替numpy在一个解析问题中 我将结构化文本文件转换为字符表并对不同的列进行操作 然而 似乎polars大约慢5倍numpy在我执行的大多数操作中 我想知道为什么会出现这种情况以及我是否做错了什么polars应该
  • 依赖 NSUbiquitousKeyValueStore 存储重要数据是否安全?

    我了解到NSUbiquitousKeyValueStore总是可用的 也当没有 iCloud 帐户 https stackoverflow com a 11174855 251760已设置 这让我相信我可以安全地将重要数据存储在其中 而无需
  • 如何让表单和交易在phoenix+ecto中发挥良好?

    我正在玩 Phoenix Ecto 我偶然发现了一些对我来说不习惯的东西 我有一个代表一个表格Invitation 创建邀请函时 我们还需要创建一个User显然我希望两者都发生在一个事务中 这样我就可以保持数据的一致性 在我的表格中我要求n
  • 有没有在 GCP Composer Airflow 上安装私有依赖项的成功案例?

    背景信息 通常在容器环境中 我可以使用以下命令轻松安装我的私有依赖项 requirements txt像这样 index url https user pass some repo jfrog io some repo api pypi p
  • Google 存储桶的签名网址与提供的签名不匹配

    我在使用谷歌存储时遇到了困难 所以我正在尝试做一个签名网址 https cloud google com storage docs access control Signed URLs 已经有客户端 ID 这是一封电子邮件 和私钥 如所述h
  • 如何绘制 3D 直方图

    我有三个数组 我正在尝试制作 3D 直方图 x 1 2 3 2 5 2 6 8 6 7 y 10 10 20 50 20 20 30 10 40 50 60 z 105 25 26 74 39 85 74 153 52 98 到目前为止 这
  • 警告 Prop `href` 不匹配。使用 React 服务器端渲染

    我在用react router dom我猜测这是导致问题的原因 但我不知道从哪里开始寻找或如何解决它 我也遇到类似的错误Warning Did not expect server HTML to contain a
  • 为什么 urllib.request.urlopen 有时不起作用,但浏览器可以工作?

    我正在尝试使用 Python 下载一些内容urllib request 以下命令会产生异常 import urllib request print urllib request urlopen https fpgroup foreignpo