私はPythonが初めてです。私は、複数のGoogleアナリティクスプロファイルから一部のデータをエクスポートするための新しいスクリプトを作成しました。しかし、それは非常にひどく書かれていると確信しています。各ループの後に私のリストを空にするより良い方法はありますか?
私はそれを改善するためにどこを開始するのか本当にわからないので、ここに私の最初の質問です。
プロファイルIDのリストをループしています。各プロフィールIDについて、私はappend
メソッドを使用しているいくつかのアクションを実行しました。だから私はいくつかのリストを段階的に構築していますが、最後にこれらのリストをリセットする必要があります。だから私はコードの始めと終わりにこのようなものを持っています:
fullurllist = []
urllist = []
share = []
sharelist = []
sharelist1 = []
end_list = []
私はこれを避けるべきだと思います。私のコードのすべてのロジックを変更する必要がありますか?この面を改善するために私ができることは他にありますか?ここで
はコードです:
# Loop through the profiles_list and get the best pages for each profile
for profile in profiles_list:
response = service.data().ga().get(
ids='ga:' + profile,
start_date='1daysAgo',
end_date='today',
metrics='ga:sessions',
dimensions='ga:pagePath',
sort='-ga:sessions',
filters='ga:sessions>400').execute()
# Catch response.
rawdata = response.get('rows', [])
# Flatten response (which is a list of lists)
for row in rawdata:
urllist.append(row[0])
# Building a list of full url (Hostname + Page path)
fullurllist = [urljoin(base, h) for h in urllist]
# Scraping some data from the url list
for url in fullurllist:
try:
page = urllib2.urlopen(url)
except urllib2.HTTPError as e:
if e.getcode() == 404: # eheck the return code
continue
soup = BeautifulSoup(page, 'html.parser')
# Take out the <div> of name and get its value
name_box = soup.find(attrs={'class': 'nb-shares'})
if name_box is None:
continue
share = name_box.text.strip() # strip() is used to remove starting and trailing
# save the data in tuple
sharelist.append(url)
sharelist1.append(share)
# Format the data scraped
end_list = [int(1000*float(x.replace('k', ''))) if 'k' in x else int(x) for x in sharelist1]
#export in csv
csv_out = open(response.get('profileInfo').get('profileName') + '.csv', 'wb')
mywriter = csv.writer(csv_out)
for row in zip(sharelist, end_list):
mywriter.writerow([row])
csv_out.close()
#reset list
fullurllist = []
urllist = []
share = []
sharelist = []
sharelist1 = []
end_list = []
どうもありがとう!
繰り返しのものを関数で囲みます。このようなタスクは自動的に処理されます。 – kawadhiya21
これらのうちのいくつかは必要でさえありません。例えば、 'fullurllist'は' fullurllist = [urljoin(h、urllistのhのための基底、h)] 'で作成されていますので、' fullurllist'がポピュレートされているのか空でないのか、単にその名前と以前の参照に割り当てるだけで失われます。 – TigerhawkT3
すべてのリストが必要ですか?例えば、 'urllist'は、' fullurllist'にデータを入れるのとは別に使われていないようですが、あなたの出力の一部ではないようです。 – asongtoruin