python - 使用Python从网页中提取图像链接

标签 python image python-2.7 web-scraping

所以我想获取此页面上的所有图片(nba 球队的)。 http://www.cbssports.com/nba/draft/mock-draft

但是,我的代码提供的远不止于此。它给了我,

<a href="/nba/teams/page/ORL"><img src="http://sports.cbsimg.net/images/nba/logos/30x30/ORL.png" alt="Orlando Magic" width="30" height="30" border="0" /></a>

我怎样才能缩短它只给我,http://sports.cbsimg.net/images/nba/logos/30x30/ORL.png。

我的代码:

import urllib2
from BeautifulSoup import BeautifulSoup
# or if your're using BeautifulSoup4: 
# from bs4 import BeautifulSoup

soup = BeautifulSoup(urllib2.urlopen('http://www.cbssports.com/nba/draft/mock-draft').read())

rows = soup.findAll("table", attrs = {'class': 'data borderTop'})[0].tbody.findAll("tr")[2:]

for row in rows:
  fields = row.findAll("td")
  if len(fields) >= 3:
    anchor = row.findAll("td")[1].find("a")
    if anchor:
      print anchor

最佳答案

我知道这可能是“创伤性的”,但是对于那些自动生成的页面,您只想抓取该死的图像并且永远不会回来,采用所需模式的快速肮脏的正则表达式往往是我的选择(不依赖 Beautiful Soup 是一个很大的优势):

import urllib, re

source = urllib.urlopen('http://www.cbssports.com/nba/draft/mock-draft').read()

## every image name is an abbreviation composed by capital letters, so...
for link in re.findall('http://sports.cbsimg.net/images/nba/logos/30x30/[A-Z]*.png', source):
    print link


    ## the code above just prints the link;
    ## if you want to actually download, set the flag below to True

    actually_download = False
    if actually_download:
        filename = link.split('/')[-1]
        urllib.urlretrieve(link, filename)

希望这有帮助!

关于python - 使用Python从网页中提取图像链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11350464/

相关文章:

css - Twitter Bootstrap - 图像类不适用?

java - 使用 IOUtils 和 ImageIO 写入图像文件有什么区别

java - 放大位图

python - string.format 与 css 标签冲突 : { } 's

python - 在目录中的每个子文件夹中创建一个文件夹?

python - 在 Django 中迭代 Slugify。对于多个具有相同名称的对象

python - 通过 index 和 cols 合并/加入/追加两个带有 MultiIndex 列的 Pandas DataFrame

python - pweave 模块不生成图形

python - 查找单词中字符替换的每个排列

c++ - 在visual studio 2017中安装opencv