0

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|||||

名前を名前などとして保存するにはどうすればよいですか?? 私がこれにあまりにも長い間立ち往生しているのを助けてください:)

4

0 に答える 0