2017-08-18 2 views
-3
import requests, sys 
from bs4 import BeautifulSoup 

r = requests.get("https://www.crossoutdb.com/"); 

s=BeautifulSoup(r.content, 'lxml'); 

it=s.find(id="ItemTable").find("tbody"); 

f=open("market.csv", "w") 

f.write("item,faction,type,popularity,sell_price,sell_offers,buy_price,buy_ordes,margin\n") 

for item in it.find_all("tr"): 
title=item.find(class_="item-title ").text.strip(); 

    print(data); 
    data=item.contents[1].text.strip().split("\n") 
    title=data[0]; 
    faction=data[1]; 
    type=data[2]; 

      rareity=item.contents[3].text.strip() 
      popularity = item.contents[5].text.strip(); 
      sell_price = item.contents[7].text.strip(); 
      sell_offers = item.contents[9].text.strip(); 
      buy_price = item.contents[11].text.strip(); 
      buy_orders= item.contents[13].text.strip(); 
      margin = item.contents[15].text.strip(); 

x="\"{}\",{},{},{},{},{},{},{},{}\n".format(title, faction, type,popularity, sell_price, sell_offers, buy_price, buy_orders, margin); 
f.write(x) 
f.close() 

Error : Traceback (most recent call last): File "**************\market_dumper.py", line 19, in faction=data[14]; IndexError: list index out of rangeErreur Python IndexError: liste des index hors de portée

+5

'data' a moins de 15 éléments - imprimez-le et voyez ce qui se passe. –

+1

Veuillez corriger l'indentation dans votre exemple de code. (Et débarrassez-vous de tous les semi-colons stupides). – ekhumoro

Répondre

2

Vous êtes les plus

Error : Traceback (most recent call last): File "**************\market_dumper.py", line 19, in faction=data[14]; IndexError: list index out of range

comme data peut ne pas contenir 15 éléments. Si c'est le cas, cette ligne ne devrait pas être une erreur. Essayez print(data) et vérifiez s'il a 15 éléments ou non.

Aussi, s'il vous plaît modifier votre message et mettre le résultat de la print() dans votre message afin que nous puissions voir combien d'éléments sont dans data.