我正在构建一个网络抓取工具,以便使用selenium和无头镀铬浏览器自动下载推文数据。
我已经写了一个登录twitter的功能,导航到分析页面并下载csv文件,但有没有办法使用pandas.read_csv函数直接从源读取csv而无需下载为中间步骤?我将数据推送到SQL数据库并最终想要在AWS Lambda上安排,所以如果我不需要创建新文件就会很好。
代码如下(twt是我在if 名称 ==" 主要":行中如何称为TwitterBrowser() )
class TwitterBrowser:
def __init__(self):
global LOGIN, PASSWORD, browser
chrome_options = Options()
chrome_options.add_argument("--incognito")
chrome_driver = os.getcwd() +"\\chromedriver.exe"
browser = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
parser = ConfigParser()
parser.read("apikeys.ini")
LOGIN = parser.get('TWITTER', 'USERNAME')
PASSWORD = parser.get('TWITTER', 'PASSWORD')
def get_url(self, url, sec):
load_page = browser.get(url)
try:
WebDriverWait(browser, timeout=sec)
except TimeoutException:
print('TIMED OUT!')
return load_page
def login(self):
twt.get_url('https://twitter.com/login', 5)
browser.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/fieldset/div[1]/input').send_keys(LOGIN)
browser.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/fieldset/div[2]/input').send_keys(PASSWORD)
WebDriverWait(browser, 5)
browser.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button').click()
def tweet_analytics(self):
twt.get_url('https://analytics.twitter.com/user/'+LOGIN+'/tweets', 5)
WebDriverWait(browser, 5)
browser.find_element_by_xpath('/html/body/div[2]/div/div[2]/div').click()
WebDriverWait(browser, 5)
browser.find_element_by_xpath('/html/body/div[5]/div[4]/ul/li[1]').click()
WebDriverWait(browser, 5)
browser.find_element_by_xpath('//*[@id="export"]/button/span[2]').click()
WebDriverWait(browser, 10)
答案 0 :(得分:0)
Pandas可以直接从网址读取csv,如here所述。所以我得到原始的csv链接并直接读取它。我不确定Twitter分析是否在他们的服务器(raw csv exemple)上托管了原始csv,或者他们生成了下载链接,在运行中生成csv,您将被卡住,很可能是因为我没有看到他们托管不必要的csv。
如果您必须下载它,您可以从中阅读