【问题标题】:Server errors while web scraping https in python在 python 中 Web 抓取 https 时出现服务器错误
【发布时间】:2014-09-20 05:16:13
【问题描述】:

我正在尝试抓取这个网站https://propaccess.trueautomation.com/ClientDB/Property.aspx?prop_id=17471

我可以将地址直接输入到我的 url 栏中,得到我想要的结果,但是当我在 python 中抓取时,我只能得到“运行时错误”页面的源代码。

我认为这可能与 https 有关,因为我可以像 craigslist 一样清晰地抓取页面。

我的代码如下,

import urllib
import re

domain = "https://propaccess.trueautomation.com/ClientDB/Property.aspx?
prop_id=17471"


htmlfile = urllib.urlopen(domain)
htmltext = htmlfile.read()
print htmltext

我是 python 新手,但不是互联网新手。我假设如果我可以成功地将 url 输入到浏览器中,我就可以在 python 中输入相同的 url。好像不是这样,我也不知道为什么。

谢谢。 迈克

更新:如果我在从未使用过此页面的浏览器中浏览到上述网址,我会收到“运行时错误”页面。

【问题讨论】:

  • 这似乎是您尝试抓取的网站的问题。因此,我认为这不是真正的主题。
  • 我不认为这是页面上的问题,我认为它与 https 有关,也许与证书有关。我不确定,因为我对抓取非常陌生,这是我第一次尝试抓取 https 网站。
  • 这更有可能是由于缺少 cookie,但如果应用程序会为您提供一个很好的错误页面来指示出了什么问题,那就更好了。无论哪种方式,问题都出在 Web 应用程序上。 (如果是证书问题,你甚至不会走到这一步——你会遇到连接失败。)
  • 这是有道理的,因为我最初无法在其他浏览器中查看该页面,直到我返回该页面的主菜单。我猜它设置了一个cookie,现在我可以查看我想要的所有内容。所以现在的问题是,就我的 python 代码而言,我遗漏了哪些信息?我需要研究什么主题?感谢您的帮助。
  • 基本上你需要弄清楚设置了什么cookie。 Chrome 的内置开发者面板可以在这里提供帮助(按 F12,使用网络选项卡);其他浏览器也有类似的扩展。然后你需要send that cookie in your Python code。祝你好运!

标签: python web https screen-scraping


【解决方案1】:

我无法访问您链接的页面。 看起来您正在一个经过身份验证的会话中,而您的 python 代码当然不知道发生了什么。因此,它将返回“权限被拒绝”或类似的结果。

如果是这样,您可能希望在请求时传递会话 cookie。 Requests 库希望能满足您的需求。

(http://docs.python-requests.org/en/latest/user/advanced/#session-objects)

提示:当您进行抓取工作时,请使用隐身模式查看网页。 页面的外观与您的 python 环境完全相同。

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多