【问题标题】:How to retrieve the max size of images using beautiful soup-python如何使用漂亮的 soup-python 检索图像的最大尺寸
【发布时间】:2016-03-03 23:58:36
【问题描述】:

我用python做了一个爬虫,我正在尝试从这篇文章-http://www.bbc.com/news/business-34958154下载图片。 这个网站的问题是它会自动调整它,当我试图下载文章的图像时,它给了我 320 像素(太小)。发生的原因是爬虫进入了url的源文件(view-source:http://www.bbc.com/news/business-34958154),该文件有320个像素。 有一种方法可以使图像最大尺寸,或者我如何在浏览器中看到它? 这是获取图像的代码:

r = requests.get("http://www.bbc.com/news/business-34958154")
soup = BeautifulSoup(r.content)
soupAllImgs=soup.findAll('img',src=True)

【问题讨论】:

    标签: python beautifulsoup web-crawler python-requests image-size


    【解决方案1】:

    那个图片标签有src="http://ichef.bbci.co.uk/news/320/media/images/78532000/jpg/_78532434_hs2ii.jpg"。您可以通过更改 URL 中的 320 来获得几乎任何大小的图像 — *** 这里:

    http://ichef.bbci.co.uk/news/***/media/images/78532000/jpg/_78532434_hs2ii.jpg
    

    看起来他们使用 JavaScript 来动态替换它,可能取决于带宽和设备。我发现我可以得到从 10 到 999 像素的任何东西,然后是 1024 和 2048 ……我没有测试更多。

    澄清后更新

    如果您想获取屏幕上的内容(即在任何 JavaScript 执行完毕之后),那么您需要可以执行 JS 的内容,例如 Selenium,例如,请参阅 this question

    甚至有很多方法可以做到这一点without opening a browser — 请务必阅读所有答案和 cmets 以了解所有可能的情况。

    【讨论】:

    • 我知道我可以更改图片的网址,但这只是示例。我想要更通用的东西,而不仅仅是 bbc。
    • 更新响应:我尝试使用 selenium,它有效。但为了工作,它打开 Firefox 加载整个页面,然后检索源代码。加载需要几秒钟(太多了),程序是否必须打开浏览器才能加载 JS?也许有完全不同的方法来做到这一点?这是我的代码: browser = webdriver.Firefox(); browser.get("bbc.com/news/business-34958154");soup = BeautifulSoup(browser.page_source); print(soup);
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2021-11-25
    • 2011-10-14
    • 1970-01-01
    • 2013-01-17
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多