【问题标题】:How to get content by urllib when link will be redirect to another?当链接将被重定向到另一个时,如何通过 urllib 获取内容?
【发布时间】:2017-04-04 00:55:29
【问题描述】:

我正在尝试使用 urllib 从此 url 获取内容:“https://blockexplorer.com/block-index/0”。但是当浏览器加载这个链接时,它会被重定向到另一个链接“https://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f”。

这是我的代码:

import urllib

link = "https://blockexplorer.com/block-index/0"
f = urllib.urlopen(link)
myfile = f.read()
print myfile

但我收到消息“无法获取 /block-index/0”。 那么我可以在上面用块索引解析后得到页面的内容吗?

请帮我解决这个问题。

非常感谢。

【问题讨论】:

标签: python html-parsing urllib bitcoin


【解决方案1】:

如果您愿意使用 Python 请求模块,可以尝试以下代码:

r = requests.get('https://blockexplorer.com/block-index/0', allow_redirects=True)

请求后应该给你页面的内容

【讨论】:

    【解决方案2】:

    您尝试抓取的站点不接受标头*/*(urllib 的默认值),但接受text/html。可以使用以下代码进行爬取:

    import urllib2
    
    link = "http://blockexplorer.com/block-index/0"
    r = urllib2.Request(url=link)
    r.add_header('Accept', 'text/html')
    response = urllib2.urlopen(r)
    print(response.read())
    

    但我认为你以后会遇到更多问题。数据不打印在 html 中,而是通过 javascript (angularJS) 动态检索。

    【讨论】:

    • 感谢您的回答,但这对我不起作用。我想获得相同的内容“blockexplorer.com/block/…”页面。
    • 但是您是否收到了 HTML 或相同的Cannot GET /block-index/0
    • 如果您仍然收到相同的Cannot GET /block-index/0,请尝试urllib2.urlopen like Chrome
    • 不,不会出现错误“无法获取 /block-index/0”。但是内容太扼杀了,不像我想要的页面加载后像这个页面blockexplorer.com/block/…
    • 不是 HTML,对吧?这是一个带有许多问号的奇怪代码(?)?如果是这样,这是因为 gzip (来自我的要点)。只需删除 gzip 部分(新标头为 r.add_header('Accept-Encoding', 'deflate, sdch, br').
    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2016-03-23
    相关资源
    最近更新 更多