Python selenium:js按钮下载csv - 加载为数据帧?

时间:2018-04-02 16:23:45

标签: python selenium selenium-webdriver selenium-chromedriver

我正在构建一个网络抓取工具,以便使用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)

1 个答案:

答案 0 :(得分:0)

Pandas可以直接从网址读取csv,如here所述。所以我得到原始的csv链接并直接读取它。我不确定Twitter分析是否在他们的服务器(raw csv exemple)上托管了原始csv,或者他们生成了下载链接,在运行中生成csv,您将被卡住,很可能是因为我没有看到他们托管不必要的csv。

如果您必须下载它,您可以从中阅读