2

だから私はこのページのすべての写真(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
4

3 に答える 3

1

これが「心的外傷」になる可能性があることはわかっていますが、自動生成されたページで、いまいましい画像を取得して二度と戻ってこないようにしたい場合は、目的のパターンを取る迅速で汚れた正規表現が私の選択になる傾向があります ( 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)

お役に立てれば!

于 2012-07-05T19:16:40.517 に答える
1

すべての画像をhttp://www.cbssports.com/nba/draft/mock-draftに保存するには、

import urllib2
import os
from BeautifulSoup import BeautifulSoup
URL = "http://www.cbssports.com/nba/draft/mock-draft"
default_dir = os.path.join(os.path.expanduser("~"),"Pictures")
opener = urllib2.build_opener()
urllib2.install_opener(opener)
soup = BeautifulSoup(urllib2.urlopen(URL).read())
imgs = soup.findAll("img",{"alt":True, "src":True})
for img in imgs:
    img_url = img["src"]
    filename = os.path.join(default_dir, img_url.split("/")[-1])
    img_data = opener.open(img_url)
    f = open(filename,"wb")
    f.write(img_data.read())
    f.close()

特定の画像をhttp://www.cbssports.com/nba/draft/mock-draftに保存するには、次を使用します

soup.find("img",{"src":"image_name_from_source"})
于 2012-07-05T18:51:25.557 に答える