0

Google ドキュメントにある URL のリストを読み込もうとしています。私がやりたいのは、Google doc スプレッドシートから 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 

これは、spredsheet に URL が 1 つしかない場合は正常に機能しますが、ドキュメントに複数の URL がある場合、プログラムは最後の URL のみをスクレイピングします。

ループを使用すると、これを解決して newlist[0] から newlist[i] に切り替えることができると思いましたが、newlist[0] が http://(URL) の h に = であることがわかりました。最後に入力した URL と newlist[1] = t など。

どんな助けでも感謝します。

4

1 に答える 1

0

あなたが言ったように、newlistは最後の URL ですので、当然そのインデックスを尋ねると、個々の文字が返されます。urlsループの前にリストを作成し、それぞれのテキストに設定するのではなく、各 URL を追加する必要があります。

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

これurlsは、各要素が 1 つの URL であるリストです。

于 2013-08-09T10:58:47.710 に答える