【问题标题】:Pulling URLs in python vs UNIX [closed]在 python vs UNIX 中提取 URL [关闭]
【发布时间】:2013-02-12 11:22:12
【问题描述】:

我正在尝试通过使用 raw_html = urlopen(url).read() 来使用 python 提取特定的 URL。

当我检查“raw_htm”时,我发现预期的 HTML/文本已被一些文本替换,这些文本基本上告诉我我无法抓取该网站。

但是,当我使用 'curl -O' 从 UNIX/python 提取相同的 url 时,页面下载得很好。

差异的原因是什么,我应该在 python 中使用什么方法,以便我可以像在 unix 中使用 curl 命令一样获取 html?

提前感谢您的任何想法!

【问题讨论】:

  • 您是否考虑过尊重网站所有者的意愿而不是抓取他们的网站?
  • 我建议阅读该网站的robots.txt 并尊重它。如果它说不要爬,那就不要爬
  • 我正在学习 python 并且正在学习如何下载和解析网页 - 只是觉得差异很奇怪所以想问一下。

标签: python web-services parsing unix curl


【解决方案1】:

当 HTTP 客户端发出请求时,它会向服务器标识自己。在这种情况下,服务器会检查客户端是否是机器人,如果是,则拒绝访问(尽管显然无法检测到 Curl)。

您可以通过将用户代理字符串设置为欺骗浏览器来解决此问题。请参阅 this question 了解如何使用 urllib 执行此操作。但是,如果服务器的所有者不希望您抓取它,并且它检测到您无论如何都在这样做(因为您请求页面的速度太高),您可能会发现自己被阻止访问该站点,因此联系所有者可能比欺骗更好。

【讨论】:

  • 谢谢你 - 虽然仍然想知道 curl 是如何做到这一点的,这是我认为有趣的。
猜你喜欢
  • 1970-01-01
  • 2015-01-12
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2012-11-08
  • 2016-08-19
相关资源
最近更新 更多