在 imgur 上获取 URL 张图片

Getting URL of a picture on imgur

我正在尝试自动执行下载 imgur 文件的过程,为此我正在使用 beautifulsoup 来获取 link 但是老实说,我很不明白为什么这不会'行不通,根据我的研究,它应该:

    soup = BeautifulSoup("http://imgur.com/ha0WYYQ")
    imageUrl = soup.select('.image a')[0]['href']

上面的代码只是 returns 一个空列表,因此是一个错误。我试图修改它,但无济于事。感谢任何和所有输入。

<div class="post-image">


                        <a href="//i.imgur.com/ha0WYYQ.jpg" class="zoom">
                                    <img src="//i.imgur.com/ha0WYYQ.jpg" alt="Frank in his bb8 costume" itemprop="contentURL">

            </a>


</div>

这是图片标签,"post-image"是一个单词,不能分开。

imageUrl = soup.select('.post-image a')[0]['href']

select 一个标签的快捷方式:

imageUrl = soup.select_one('.post-image a')['href']

要解析文档,请将其传递给 BeautifulSoup 构造函数。您可以传入 stringopen filehandle:

from bs4 import BeautifulSoup

soup = BeautifulSoup(open("index.html"))

soup = BeautifulSoup("<html>data</html>")

您的方法有一些问题:

  • BeautifulSoup 期望 url,因此您需要先使用库来获取 HTML 流;和
  • 根据我所见,您的选择器似乎无效,应该是 .post-image a
<b>r = urllib.urlopen('http://imgur.com/ha0WYYQ').read()</b>
soup = BeautifulSoup(<b>r,'lxml'</b>)
soup.select('<b>.post-image</b> a')[0]['href']

或者更优雅:

<b>with urllib.urlopen('http://imgur.com/ha0WYYQ') as f:</b>
    r = f.read()
    soup = BeautifulSoup(r,'lxml')
    result = soup.select('.post-image a')[0]['href']