问题标签 [urllib2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
15430 浏览

python - 如何在python中下载任何(!)具有正确字符集的网页?

问题

当使用 python 对网页进行屏幕抓取时,必须知道页面的字符编码。如果你得到错误的字符编码,那么你的输出就会被弄乱。

人们通常使用一些基本的技术来检测编码。它们要么使用标头中的字符集或元标记中定义的字符集,要么使用编码检测器(它不关心元标记或标头)。仅使用其中一种技术,有时您将无法获得与在浏览器中相同的结果。

浏览器这样做:

  • 元标记始终优先(或 xml 定义)
  • 当元标记中没有定义字符集时,使用标头中定义的编码
  • 如果根本没有定义编码,那么就该进行编码检测了。

(嗯......至少我相信大多数浏览器都是这样做的。文档真的很稀缺。)

我正在寻找的是一个可以像浏览器一样决定页面字符集的库。我确信我不是第一个需要适当解决这个问题的人。

解决方案(我还没有尝试过......)

根据Beautiful Soup 的文档

Beautiful Soup 按优先级顺序尝试以下编码,将您的文档转换为 Unicode:

  • 您作为 fromEncoding 参数传递给汤构造函数的编码。
  • 在文档本身中发现的编码:例如,在 XML 声明或(对于 HTML 文档)http-equiv META 标记中。如果 Beautiful Soup 在文档中发现这种编码,它会重新从头开始解析文档并尝试新的编码。唯一的例外是,如果您明确指定了编码,并且该编码确实有效:那么它将忽略它在文档中找到的任何编码。
  • 通过查看文件的前几个字节来嗅探的编码。如果在此阶段检测到编码,它将是 UTF-* 编码、EBCDIC 或 ASCII 之一。
  • chardet 库嗅探到的编码,如果您安装了它。
  • UTF-8
  • Windows-1252
0 投票
3 回答
5406 浏览

python - urllib2:提交表单然后重定向

我的目标是想出一个可移植的 urllib2 解决方案,它会发布一个表单,然后将用户重定向到出现的内容。POSTing 部分很简单:

提供data将请求类型设置为 POST。现在,我怀疑我应该关心的所有数据都来自response.info()& response.geturl()。我应该做一个self.redirect(response.geturl())里面的get(self)方法webapp.RequestHandler

但是我应该如何处理标题?还有什么我忽略的吗?代码片段受到高度赞赏。:)

TIA。

编辑:这是我想出的一个天真的解决方案。重定向但远程服务器显示错误,表明与先前发布的表单不匹配:

0 投票
5 回答
1382 浏览

python - 在 Windows 上以 Python 2.5 下载时出现 urlopen 错误 10045,“地址已在使用中”

我正在编写将在 Linux、OS X 和 Windows 上运行的代码。它从服务器下载大约 55,000 个文件的列表,然后逐步浏览文件列表,检查文件是否存在于本地。(使用 SHA 哈希验证和其他一些好东西。)如果文件不存在本地或哈希不匹配,它会下载它们。

服务器端是基于 80 端口的 Ubuntu 上的普通 Apache 2。

客户端在 Mac 和 Linux 上完美运行,但在下载多个文件后在 Windows(XP 和 Vista)上给我这个错误:

此链接:http ://bytes.com/topic/python/answers/530949-client-side-tcp-socket-receiving-address-already-use-upon-connect指向 TCP 端口耗尽,但“netstat -n " 从未向我显示超过六个处于“TIME_WAIT”状态的连接,即使在它出错之前也是如此。

代码(它下载的 55,000 个文件中的每一个都调用一次)是这样的:

更新:我通过 greping 日志发现它恰好进入下载例程 3998 次。我已经运行了多次,每次都在 3998 处失败。鉴于链接文章指出可用端口为 5000-1025=3975(有些可能已过期并被重用),它开始看起来更像链接文章描述的真正问题。但是,我仍然不确定如何解决这个问题。进行注册表编辑不是一种选择。

0 投票
4 回答
56653 浏览

python - 使用 urllib2 将大型二进制文件流式传输到文件

我使用以下代码将大文件从 Internet 流式传输到本地文件:

这可行,但下载速度很慢。有更快的方法吗?(文件很大,所以我不想将它们保存在内存中。)

0 投票
2 回答
647 浏览

python - 如何将“catch-all”异常子句应用于复杂的 python web-scraping 脚本?

我有 100 个 CSV 格式的网站列表。所有站点都具有相同的一般格式,包括一个有 7 列的大表。我编写了这个脚本来从每个网站的第 7 列中提取数据,然后将这些数据写入文件。然而,下面的脚本部分工作:打开输出文件(在运行脚本之后)显示正在跳过某些内容,因为它只显示 98 次写入(显然脚本还记录了许多异常)。非常感谢有关如何在这种情况下实现“捕获异常”的指导。谢谢!

返回:

0 投票
2 回答
210 浏览

python - 为什么 urllib2 缺少我可以在 Firefox 源代码中看到的表字段?

我从 urllib2 收到的 html 缺少几十个数据字段,当我在 Firefox 中查看 URL 的源时可以看到这些数据字段。任何建议将不胜感激。这是它的样子:

从 FireFox 查看源代码:

从 urllib2 返回 html:

0 投票
2 回答
1379 浏览

python - 如何直接使用 python 请求经过身份验证的 url

我想使用 urllib2 访问经过身份验证的页面。我希望有一个黑客可以直接做到这一点。就像是:

如果没有,我该如何使用身份验证?

0 投票
1 回答
3178 浏览

python - 我如何知道网站的领域和 uri

我想使用 python 的 urllib2 进行身份验证,我需要一个 url 的领域和 uri。我如何得到它?

谢谢

0 投票
4 回答
7064 浏览

python - 来自 http 流的非阻塞读取/日志

我有一个连接到 HTTP 流并记录它使用的文本数据的客户端。

我向流服务器发送 HTTP GET 请求...服务器回复并不断发布数据...它会定期发布文本或发送 ping(文本)消息...并且永远不会关闭连接。

我需要以非阻塞方式读取和记录它使用的数据。

我正在做这样的事情:

我的问题是:
当流是连续的时,这会阻塞吗?
每个块中读取了多少数据,可以指定/调整吗?
这是读取/记录 http 流的最佳方式吗?

0 投票
2 回答
2339 浏览

python - 调用 urllib.urlopen 时跟踪/BPT 陷阱

出于某种原因,我在调用urllib.urlopen. 我都试过了urlliburllib2结果相同。这是引发错误的代码:

我应该补充一点,这段代码运行在带有 web.py 的 CherryPy 网络服务器上。

有人要求追溯。不幸的是,没有。Trace/BPT trap被输出到终端并且过程终止。例如

编辑:我正在运行 OS X 10.6.2、web.py 0.33、Python 2.6.2 和 CherryPy 3.1.2。