2017-11-15 10 views
0

私はPythonには絶対に新しく、Webページから単一のテーブルを掻き取ろうとしています。私はChromeで "inspect"を使ってhtmlにアクセスしました。 Webページはこちらです:findを使ってPythonで単一のhtmlテーブルを掻き集める

https://www.basketball-reference.com/players/a/abdelal01.html

以下「給与」と呼ばれるページの表があり、私は

import bs4 
from urllib2 import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

#name a page to scrape 
my_url = 'https://www.basketball-reference.com/players/a/abdelal01.html' 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 

#perform html parsing 
page_soup = soup(page_html, "html.parser") 

を使用しているコードです。私はページのタイトルと共にこのテーブルを掻き集めて、最終的にcsvファイルに入れたいと思います。しかし、私はまず給料表を取得する必要があります。私はそれが私が興味を持って一つのテーブルのみなのでBeautifulSoupからfind機能を使用しようとしている問題は、私は次のコードを実行したときに、私は何の結果を得るていないということです。私は時にChromeとを使用しています

page_soup.find("table", id = "all_salaries") 

を私はidが "all_salaries"のように見えるテーブルの "inspect"ツールを使用しますが、結果は得られません。なぜ結果が得られないのか?これを行う適切な方法は何ですか?

答えて

1

これは、csv作者とfind_all機能によって達成できます。

import bs4, csv 
from urllib2 import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

#name a page to scrape 
my_url = 'https://www.basketball-reference.com/players/a/abdelal01.html' 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 

#perform html parsing 
page_soup = soup(page_html, "html.parser") 

with open('csvOut.csv','w') as myFile: 
    writer = csv.writer(myFile, lineterminator='\n') 
    table = page_soup.find({"class" : "full_table"}) 
    for row in page_soup.find_all("tr"): 
     rowTds = [td.text for td in row.find_all("td")] 
     if len(rowTds): 
      writer.writerow(rowTds) 
+0

テーブルを表示する方法はありますか?または、少なくともcsvファイルをフォルダに送りますか? – jvalenti

+0

Excelまたはメモ帳で開く – Neil