아래 코드는 비공식 API 인 "https://github.com/GeneralMills/pytrends"을 사용하는 Google 트렌드 크롤러입니다. 내 코드는 잘 실행되지만 한 가지 문제는 아무도 Google 트렌드 크롤러의 한도를 모른다는 것입니다. 따라서 2000 개 이상의 "DNA"목록으로 크롤러를 실행하면 요청 제한을 초과했다는 오류가 발생합니다. 제한을 초과 한 경우 코드 끝 부분에서 CSV에 글을 올리면서 제한 전에 모든 크롤링 된 데이터가 손실됩니다. 모든 루프에 대해 csv에 데이터를 쓰는 방법이 있습니까? 그렇기 때문에 제한을 넘긴 후에도 제한에 도달하기 전에 최소한 데이터가 있습니까? 감사합니다Google 트렌드 크롤러 : CSV 작성 문제
from pytrends.request import TrendReq
from datetime import datetime
import pandas as pd
import time
import xlsxwriter
pytrends = TrendReq(hl='en-US,tz=360')
Data = pd.DataFrame()
#for loop check writer path
path = "C:/Users/aijhshin/Workk/GoogleTrendCounter.txt"
#file = open(path,"a")
#setting index using 'apple' keyword
kw_list = ['apple']
pytrends.build_payload(kw_list, cat=0, timeframe='today 5-y', geo='', gprop='')
Googledate = pd.DataFrame(pytrends.interest_over_time())
Data['Date'] = Googledate.index
#Google Trend Crawler limit = 1600 request per day
for i in range(len(DNA)):
kw_list = [DNA[i]]
pytrends.build_payload(kw_list, cat=0, timeframe='today 5-y', geo='', gprop='')
#results
df = pd.DataFrame(pytrends.interest_over_time())
if(df.empty == True):
Data[DNA[i]] = ""
else:
df.index.name = 'Date'
df.reset_index(inplace=True)
Data[DNA[i]] = df.loc[:, DNA[i]]
#test for loop process
file = open(path,"a")
file.write(str(i) + " " + str(datetime.now()) + " ")
file.write(DNA[i] +'\n')
file.close()
#run one per nine second (optional)
#time.sleep(9)
#writing csv file (overwrite each time)
Data.to_csv('Google Trend.csv')
print("Crawling Done")
Google과 아무런 관련이 없습니다. 느슨한 데이터가 아닌 파일을 크롤링하는 경우 항상 파일을 추가하는 것이 좋습니다. 파일 쓰기를 루프로 옮기십시오. BTW 어디에서'DNA'가 정의 되었습니까? – user1767754
DNA는 이전에 list로 정의되어 있습니다. 내 파일 쓰기를 루프로 옮기는 것을 구체적으로 말할 수 있습니까? "time.sleep (9)"옆에 "Data.to_csv ('Google Trend.csv')"를 넣었습니까? 고마워요 – Kang