当前位置: 首页 > 知识库问答 >
问题:

如何用python selenium点击下载

华谭三
2023-03-14

我尝试通过selenium(python)从GoogleTrend下载CSV数据。

在前面,我尝试打印源页和提取数据,我以后想要。它在一段时间内起作用,但现在不起作用了。

导入sys导入时间

从selenium导入webdriver.Common.Keys导入selenium.webdriver.Common.Action_Chains导入selenium.webdriver.Support.UI导入Select from selenium.webdriver.Support.UI导入webdriver Wait from selenium.webdriver.Common.By导入By from selenium.webdriver.Support导入expected_conditions为EC

def run_text_extract(search_word):

        try:
                     print(search_word)


                     driver = webdriver.Firefox('/home/noah/Desktop/Google_Trend_downloader/chromedriver/geckodriver')
         #            driver = webdriver.Chrome('/home/noah/Desktop/Google_Trend_downloader/chromedriver')

                     driver.get("https://trends.google.com/trends/explore?date=all&geo=TH&q="+search_word)
                     driver.find_element_by_xpath('html/body/div[2]/div[2]/div/md-content/div/div/div[1]/trends-widget/ng-include/widget/div/div/div/widget-actions/div/button[1]').click()



                     try: 

                          driver.manage().deleteAllCookies()
                          clear_cache(driver)

                     except TimeoutException as ex:
                            isrunning = 0
                            print("Exception has been thrown. " + str(ex))
                            print("Timeout line is", line ,".")
                            driver.close()

                     except Exception:
                            print ("Here 5")
                            pass

                     time.sleep(2) 
                     driver.close()
                     print("======== END_OF_FILE ===============")


        except:
               pass

如果name=='main':run_text_extract(sys.argv[1])time.sleep(8)#run_text_extract()

共有1个答案

濮阳景天
2023-03-14

我已经导航到您提供的链接。如果你搜索任何术语,你可以看到下载csv按钮链接将出现在右侧。但将有3个下载csv按钮链接与相同的类或css选择器是存在的。所以您需要收集所有元素并循环遍历,以便您可以单击特定的元素。在您的情况下,我假设您希望单击第一个元素。所以下面的代码应该可以工作。如果希望第二个或第三个元素单击相应更改索引。

def run_text_extract(search_word):
    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    import time
    profile = webdriver.FirefoxProfile()
    profile.set_preference("browser.download.folderList", 2)
    profile.set_preference("browser.download.manager.showWhenStarting", False)
    profile.set_preference("browser.download.dir", 'C:\\Python27')
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")
    driver = webdriver.Firefox(firefox_profile=profile,executable_path=r'C:\\Python27\\geckodriver.exe')
    driver.get("https://trends.google.com/trends/explore?date=all&geo=TH&q="+ search_word)
    time.sleep(7)
    lst = driver.find_elements_by_css_selector(".widget-actions-item.export")
    lst[0].click()

run_text_extract("selenium")
 类似资料:
  • 问题内容: 我正在研究python和selenium。我想使用selenium从单击事件中下载文件。我写了下面的代码。 我想从给定的URL从名称为“导出数据”的链接下载两个文件。我如何实现它,因为它仅适用于click事件? 问题答案: 使用查找链接,然后调用方法。 添加了配置文件处理代码,以防止出现下载对话框。

  • 我想创建一个下拉列表和一个按钮,功能是当我点击按钮,然后按钮不是可点击的意思是禁用,它是显示,首先点击下拉列表。然后按钮是启用的。我们如何使我尝试但没有发生,我没有太多的想法。所以任何机构帮助我解决这个问题。 我试过这个jquery函数我对jquery不太了解。所以谁来帮帮我。

  • 问题内容: 我只是想知道如何使用JavaScript模拟元素的点击。 目前我有: 但这不起作用:( 有任何想法吗? 问题答案: 这是我煮的 这很简单,但是有效: 用法:

  • 问题内容: 我想在Fastlane快照中使用Xcode UI测试来制作Cordova应用程序的屏幕截图。基本上,由于我的整个应用程序只是一个Web视图,因此所有Xcode UI测试帮助程序方法都变得无关紧要,我只想点击特定的点,例如应该在该点处进行点击。 那可能很简单,但是我不知道该怎么做。 谢谢。 问题答案: 您可以使用API轻击特定点。不幸的是,您不能只说出“ tap 10,10”以引用像素坐

  • 问题内容: 当用户单击下拉菜单之外的任何地方时,我想关闭我的登录菜单下拉菜单,我想使用Angular2和Angular2“方法”来完成此操作… 我已经实现了一个解决方案,但是我对此确实没有信心。我认为必须有一种最简单的方法来达到相同的结果,因此,如果您有任何想法…让我们讨论一下:)! 这是我的实现: 下拉组件: 这是我的下拉菜单的组成部分: 每次将此组件设置为可见时,(例如:当用户单击按钮以显示它

  • 我想按附上的图片点击href链接,我试过下面的代码,但似乎不起作用。请帮帮我. ..... driver.findElement(by.xpath(“//a[@href='careers']”)).click(); ............ 下面是Div标记的HTML内容................. null ........................