【问题标题】:webscraping an image with python but can't find image使用 python 抓取图像但找不到图像
【发布时间】:2017-04-03 01:44:42
【问题描述】:

我正在尝试从网址中抓取 stockcharts.com 以获取图表图像。例如来自:http://stockcharts.com/h-sc/ui?s=AMZN

但是,当检查有问题的元素时,它不是带有 .jpg、.png 等后缀的正确图像 src。例如上面链接中的问题元素是:http://stockcharts.com/c-sc/sc?s=AMZN&p=D&b=5&g=0&i=0&r=1479451634864

因此,当我尝试在 python 2.7 中使用以下代码时,我在共享脚本的目录中得到一个空文件:

import urllib
url = "http://stockcharts.com/c-sc/sc?s=AMZN&p=D&b=5&g=0&i=0&r=1479451634864"
filename = "testimg.jpg"
urllib.urlretrieve(url, filename)

这是一个 javascript 呈现的页面,还是我遗漏了什么?参考其他地方?

【问题讨论】:

    标签: python web-scraping urllib


    【解决方案1】:

    站点检查User-Agent 标头;它只允许特定的用户代理。

    您需要更改标题以获取图像。否则,网站会返回 403 Forbidden 响应。

    urllib.urlretrieve不接受额外的头文件,你需要使用urllib2.urlopen/urllib2.Request来指定自定义头文件并自己保存文件:

    import urllib2
    
    url = "http://stockcharts.com/c-sc/sc?s=AMZN&p=D&b=5&g=0&i=0&r=1479451634864"
    filename = "sc.png"
    req = urllib2.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
    u = urllib2.urlopen(req)
    with open(filename, 'wb') as f:
        f.write(u.read())
    

    【讨论】:

    • @downvoter,我该如何改进答案?请让我知道答案有什么问题。
    • @JRodDynamite,感谢您的英文更正。
    • 我假设您像我一样拥有 Windows 7 64 位。我单击您第一句话中的链接并获得带有图表的新页面。我右键单击图表并选择“另存为”,图像文件的文件名是“sc.png”而不是“testimg.jpg”
    • @Marichyasana,我更改了文件名(下载后用于本地文件名)。感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多