0

http://www.basketball-reference.com/boxscores/201112250DAL.htmlからスクレイピングされたレギュラーシーズンのチームのすべてのゲームのデータを取得しようとしています。他のすべてのデータ ファーミング機能は正常に動作していますが、問題はスクレーパーのループにあります。これは、次のページの URL を取得するために使用したテスト コードです。これを使用して、チームがレギュラー シーズン中にプレーした 66 試合すべてからデータを取得できますが、このようにスクレイピングするには大量の入力が必要です。これを自動化するための最も簡単なソリューションは何でしょうか?

ありがとうございました!

URL = "http://www.basketball-reference.com/boxscores/201112250DAL.html" 

html = urlopen(URL).read()
soup = BeautifulSoup(html)

def getLink(html, soup):
    links = soup.findAll('a', attrs={'class': 'bold_text'})
    if len(links) == 2:
        a = links[0]
        a = str(a)
        a = a[37:51]
        return a
    if len(links) == 3:
        a = links[1]
        a = str(a)
        a = a[37:51]
        return a
    if len(links) == 4:
        a = links[3]
        a = str(a)
        a = a[37:51]
        return a

print getLink(html, soup)
URL1 = "http://www.basketball-reference.com/boxscores" + getLink(html, soup) + "html"
print URL1
html1 = urlopen(URL1).read()
soup1 = BeautifulSoup(html1)

print getLink(html1, soup1)
4

2 に答える 2

3

最も簡単な方法は、http://www.basketball-reference.com/teams/DAL/2012_games.htmlにアクセスして、次のようにすることです。

URL = 'http://www.basketball-reference.com/teams/DAL/2012_games.html'
html = urllib.urlopen(URL).read()
soup = BeautifulSoup(html)

links = soup.findAll('a',text='Box Score')

<a>これは、 「Box Score」というテキストを含むすべてのタグのリストを返します。これでテストします:

for link in links:
    print link.parent['href']
    page_url = 'http://www.basketball-reference.com' + link.parent['href']

ここから、別のリクエストをpage_url行い、コーディングを続けます。

これは私が使用したコード全体であり、私にとっては完璧に機能しました。

from BeautifulSoup import BeautifulSoup
import urllib


url = 'http://www.basketball-reference.com/teams/DAL/2012_games.html'
file_pointer = urllib.urlopen(url)
soup = BeautifulSoup(file_pointer)

links = soup.findAll('a',text='Box Score')
for link in links:
    print link.parent['href']
于 2012-12-17T20:03:46.020 に答える
0

最も簡単な方法は、Scrapyを使用することです。自動的にリンクをたどります。

どの URL を追跡して無視するかについて、複雑なルールを簡単に作成できます。その後、Scrapy は、ルールに一致する任意の URL に従います。スクレイピーがどのように機能するかを学ぶ必要がありますが、開始方法に関する優れたクイックチュートリアルを提供します.

于 2012-12-18T14:42:52.367 に答える