【发布时间】:2015-03-16 09:35:27
【问题描述】:
我正在尝试通过使用带有 lxml 作为解析器的 BeautifulSoup 4 从一些 Wikipedia 页面获取特定图像。例如,我试图从这个维基百科页面获取右边的专辑封面: http://en.wikipedia.org/wiki/Animal_House_(U.D.O._album)
执行抓取的函数是这样的:
def get_cover_from_wikipedia(url):
r = requests.get(url)
if r.status_code == 200:
soup = BeautifulSoup(r.content, 'lxml')
elements = soup.find_all('a', class_='image')
for element in elements:
print '%s\n\n' % element.prettify()
return False
打印的输出如下:
<a class="image" href="/wiki/File:Question_book-new.svg">
<img alt="" data-file-height="204" data-file-width="262" height="39" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" width="50"/>
</a>
<a class="image" href="/wiki/File:UDO_animal_house.jpg">
<img alt="" data-file-height="302" data-file-width="300" height="221" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4e/UDO_animal_house.jpg/220px-UDO_animal_house.jpg" srcset="//upload.wikimedia.org/wikipedia/en/4/4e/UDO_animal_house.jpg 1.5x, //upload.wikimedia.org/wikipedia/en/4/4e/UDO_animal_house.jpg 2x" width="220"/>
</a>
我要提取的图像是第二个块中以<a class... 开头的图像,而不是第一个块中的图像的书图像
我想在这里完成的是:
我只想获取
src指定的链接,而不是类附带的所有内容。我希望能够区分图书图像和我要拉出的图像。书籍图片在那里,因为如果您查看 Wikipedia 页面,它会说文章需要引用,并且那里有书籍图片。显然它与我对标签
a和类image的搜索匹配,但它可能存在也可能不存在,具体取决于相关文章。
仅获取我感兴趣的图像(即文章右侧的图像)的最佳方法是什么?
【问题讨论】:
标签: python html css web-scraping beautifulsoup