Ruby構文をPythonの同等のものに変換しようとしています:
Rubyコードは次のとおりです。
collection_action :updateBackPlayers, :method => :get do
url="http://fantasyfootball.telegraph.co.uk/premierleague/select-team"
website = Nokogiri::HTML(open(url))
elements=website.xpath('//*[@id="list-GK"]/table/tr')
arr = []
elements.each do |row|
x=row.xpath('td')
name = x[0].text
club = x[1].text
@player=Player.find_by_name_and_club(name,club)
arr=x[7].text.split("|")
score=arr[1].split("/")
cards=arr[3].split("/")
clean_sheets = arr[2].split("/")
goals=arr[4]
weekly_points = arr[0].to_i - (@player.points || 0)
@player.update_attributes(:weekly_points => weekly_points, :points => arr[0].to_i, :value=>x[2].text.to_f, :games=>score[0].to_i, :part_appearances=>score[1], :goals=>goals.to_i )
@player.update_attributes(:yellows=>cards[0], :reds=>cards[1], :clean_sheets=> clean_sheets[0], :part_clean_sheets=>clean_sheets[1] )
#@player.penalties_saved = arr[2]
end
これはもちろん Nokogiri を使用していますが、lxml と XPath を使用して同じことを行い、この情報を SQLite3 を使用して Django モデルに保存したいと考えています。
これがPythonコードです。
from lxml.html import parser
url = "http://fantasyfootball.telegraph.co.uk/premierleague/select-team"
website = parse(url)
elements = website.xpath('//div[@id="list-GK"]//table/tr')
for row in elements:
x = row.xpath('td')
for z in x:
name = z[1].text
club = z[2].text
しかし、これは機能せず、制限外エラーが発生します。elements.each do |row|
問題は、Pythonと完全に同じではないことにあると思いますfor row in elements:
。
次のエラーが表示されます。
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
IndexError: list index out of range
しかし、もしそうなら:
from lxml.html import parse
from fanaments.models import Player
url="http://fantasyfootball.telegraph.co.uk/premierleague/select-team"
page = parse(url)
elements = page.xpath('//div[@id="list-GK"]//table/tr')
for row in elements:
x = row.xpath('td')
for z in x:
print z.text
私は以下を取得します:
None
Hart, J
MCY
4.0
20
11.6%
None
Hart, Joe
MCY|£4.0m|5|0||20|0|0|0|4|0|0|3|0|0||||unknown|
MCY|£4.0m|39|0||140|1|0|0||0||18|0|1|||||
None
de Gea, D
MUN
3.9
15
6.4%
None
de Gea, David
MUN|£3.9m|5|0||15|0|0|0|6|0|0|2|0|0||||unknown|
MUN|£3.9m|33|0||99|0|0|0||0||11|0|0|||||
名前を名前などとして保存するにはどうすればよいですか?? 私がこれにあまりにも長い間立ち往生しているのを助けてください:)