2013-08-20 49 views
0

这是一个相当长的问题,我可能会错过某些内容,所以如果需要更多信息,请提问。使用google-docs-api排序错误

我一直在使用scaperwiki从谷歌学者那里搜索数据,直到最近我只是把所有的网址都放在这里。

elec_urls = """http://1.hidemyass.com/ip-5/encoded/Oi8vc2Nob2xhci5nb29nbGUuY29tL2NpdGF0aW9ucz91c2VyPWo0YnRpeXNBQUFBSiZobD1lbg%3D%3D&f=norefer 
http://4.hidemyass.com/ip-1/encoded/Oi8vc2Nob2xhci5nb29nbGUuY29tL2NpdGF0aW9ucz91c2VyPVZXaFJiZEFBQUFBSiZobD1lbg%3D%3D&f=norefer 
http://4.hidemyass.com/ip-2/encoded/Oi8vc2Nob2xhci5nb29nbGUuY29tL2NpdGF0aW9ucz91c2VyPV84X09JSWNBQUFBSiZobD1lbg%3D%3D&f=norefer 
http://1.hidemyass.com/ip-4/encoded/Oi8vc2Nob2xhci5nb29nbGUuY29tL2NpdGF0aW9ucz91c2VyPUh3WHdmTGtBQUFBSiZobD1lbg%3D%3D&f=norefer 
http://4.hidemyass.com/ip-1/encoded/Oi8vc2Nob2xhci5nb29nbGUuY29tL2NpdGF0aW9ucz91c2VyPXU1NWFWZEFBQUFBSiZobD1lbg%3D%3D&f=norefer 
""".strip() 

elec_urls = elec_urls.splitlines() 

我再花葶每一页,并把我想类型的字典列表中的信息,排序一次,删除重复项,然后再使用不同的密钥进行排序的话,我再导出我想要的信息到谷歌文档电子表格。这工作100%。

我试图改变它,以便我可以有另一个Google文档电子表格,并且从这里我可以放入所有的URL并且它会执行相同的操作。以下是我迄今为止所做的。

def InputUrls(Entered_doc, EnteredURL): 
    username = 'myemail' 
    password = 'mypassword' 
    doc_name = Entered_doc 
    spreadsheet_id = Entered_doc 
    worksheet_id = 'od6' 

    # Connect to Google 
    gd_client = gdata.spreadsheet.service.SpreadsheetsService() 
    gd_client.email = username 
    gd_client.password = password 
    gd_client.source = EnteredURL 
    gd_client.ProgrammaticLogin() 

    #Now that we're connected, we query the spreadsheet by name, and extract the unique spreadsheet and worksheet IDs. 

    rows = gd_client.GetListFeed(spreadsheet_id, worksheet_id).entry 
    #At this point, you have a row iterator which will yield rows for the spreadsheet. This example will print everything out, keyed by column names: 
    urlslist = [] 
    for row in rows: 
     for key in row.custom: 
      urlslist.append(row.custom[key].text) 
     return urlslist 

def URLStoScrape(ToScrape): 
    Dep = [] 
    for i in range(0,len(ToScrape)): 
     Department_urls = ToScrape[i].strip() 
     Department_urls = Department_urls.splitlines() 
     Done = MainScraper(Department_urls) 
     Dep.append(Done) 

return Dep 

ElectricalDoc = '0AkGb10ekJtfQdG9EOHN0VzRDdVhWaG1kNVEtdVpyRlE' 
ElectricalUrl = 'https://docs.google.com/spreadsheet/ccc? ' 
ToScrape_Elec = InputUrls(ElectricalDoc, ElectricalUrl) 

这似乎很好,但然后当程序去排序我得到下面的错误。

回溯(最近通话最后一个): 文件 “./code/scraper”,线路230,在 Total_and_Hindex_Electrical = GetTotalCitations(电气) 文件 “./code/scraper”,行89,在GetTotalCitations Wrt_CitationURL = Sorting(Department,“CitationURL”) 文件“./code/scraper”,第15行,排序 SortedData = sorted(Unsorted,reverse = True,key = lambda k:k [pivot]) 文件“代码/刮板“,第15行,在 SortedData = sorted(Unsorted,reverse = True,key = lambda k:k [pivot]) TypeError:列表索引必须是整数,而不是str

我认为,几乎可以肯定的是,它与URLStoScrape函数有关,但我不知道如何解决它,任何帮助都会很棒。

谢谢你让我知道,如果需要

+0

它看起来像枢轴变量是一个字符串,而不是一个整数。你可以发布sorted()的代码吗? – raphonic

+0

以下是排序功能的代码。 def Sorting(Unsorted,pivot): SortedData = sorted(Unsorted,reverse = True,key = lambdak:k [pivot]) return SortedData – Totothejuggler

回答

0

更多的信息,我认为这个问题是在该行89,

GetTotalCitations Wrt_CitationURL = Sorting(Department, "CitationURL") 

无论是“CitationUrl”应该是一个整数索引,或价值的值传递到 key函数sorted()应该是一个字典。

+0

也许这在我做这件事时似乎没有什么区别另一种方式,任何想法为什么这可能是? – Totothejuggler

+0

当我打印URLStoScrape的输出时,这可能会有帮助,我得到的东西看起来像这样[[这是空的] [{} {} {} {} {} {} {}]]。封入在{}中的所有内容都有数据。但是当我列出所有列出的网址时,我会打印出类似的内容,我会得到类似于[{} {} {} {} {} {}]的内容。它可能是导致问题的额外列表和空列表吗? – Totothejuggler

+0

也许排序功能没有考虑空结果? – raphonic