0

我正在尝试阅读我在谷歌文档上的 URL 列表。我想要做的是从谷歌文档电子表格中读取 URL,然后抓取每个 URL。

import gdata.docs.data
import gdata.docs.client
import gdata.docs.service
import gdata.spreadsheet.service
import re, os

username        = 'myemail.nuigalway@gmail.com'
password         = 'mypassword'
doc_name        = 'My document'

gd_client = gdata.spreadsheet.service.SpreadsheetsService()
gd_client.email = username 
gd_client.password = password  
gd_client.source = 'https://docs.google.com/spreadsheet/ccc? key=0AkGb10ekJtfQdG9EOHN0VzRDdVhWaG1kNVEtdVpyRlE#gid=0'
gd_client.ProgrammaticLogin()

q = gdata.spreadsheet.service.DocumentQuery()
q['title'] = doc_name
q['title-exact'] = 'true'
feed = gd_client.GetSpreadsheetsFeed(query=q)
spreadsheet_id = feed.entry[0].id.text.rsplit('/',1)[1]
feed = gd_client.GetWorksheetsFeed(spreadsheet_id)
worksheet_id = feed.entry[0].id.text.rsplit('/',1)[1]

rows = gd_client.GetListFeed(spreadsheet_id, worksheet_id).entry


for row in rows:
    for key in row.custom:
        urls = row.custom[key].text 
    newlist = urls
print 'this is a list',  newlist 

elec_urls = newlist.strip()

#After this each the Url in the list is scraped using scraperwiki 

如果我在电子表格中只有一个 URL,这可以正常工作,但我没有,当我在文档中有多个 URL 时,程序只会抓取最后一个 URL。

我认为使用循环可以解决这个问题,从 newlist[0] 循环到 newlist[i] 但发现 newlist[0] 是 = 到 http://(URL) 最后输入的 url 和 newlist[1] 的 h = t 等等。

任何帮助将不胜感激。

4

1 回答 1

0

正如你所说,newlist是最后一个 URL,所以当你询问它的索引时,你自然会得到单个字母。您需要在循环之前创建一个列表,然后将每个 url 附加到它,而不是设置urls到每个的文本:

urls = []
for row in rows:
    for key in row.custom:
        urls.append(row.custom[key].text)

现在urls是一个列表,其中每个元素都是一个 URL。

于 2013-08-09T10:58:47.710 回答