• 使用Selenium抓取百度指数一


    抓百度指数的数据,比较简单的演示:selenium+浏览器(我这是Firefox)的代码。

    代码如下:

    from selenium import webdriver

    from selenium.webdriver.common.action_chains import ActionChains

    import time

    # 此函数用于打开浏览器
    def openbrowser():
        global browser
        url = "http://index.baidu.com/"#百度指数网站
        browser = webdriver.Firefox()
        browser.get(url)
        # 点击网页的登录按钮              
        browser.find_element_by_xpath("/html/body/div/div[1]/div[2]/div[1]/div[4]/span/span").click()
        time.sleep(3)
        #传入账号密码
        account="你的百度账号"
        passwd="你百度账号的密码"
        try:
            browser.find_element_by_id("TANGRAM__PSP_4__userName").send_keys(account)
            browser.find_element_by_id("TANGRAM__PSP_4__password").send_keys(passwd)
            browser.find_element_by_id("TANGRAM__PSP_4__submit").click()
        except:
            browser.find_element_by_id("TANGRAM_12__password").send_keys(account)
            browser.find_element_by_id("TANGRAM_12__userName").send_keys(passwd)
            browser.find_element_by_id("TANGRAM_12__submit").click()

        time.sleep(3)

    def deal(name):
        # 清空网页输入框
        browser.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[1]/div/div[2]/form/input[3]").clear()
        # 写入需要搜索的百度指数
        browser.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[1]/div/div[2]/form/input[3]").send_keys(name)
        # 点击搜索
        try:
            browser.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[1]/div/div[2]/div/span").click()
        except:
            browser.find_element_by_id("schsubmit").click()
        time.sleep(2)
        browser.execute_script("window.scrollTo(0,1000)") # 执行滚屏操作
        browser.save_screenshot("baiduIndex.png")           # 由于这里图片数据无法直接抓取,所以先截图保存

     browser.close()

     browser.quit()

    if __name__ == '__main__':  # 主函数

        openbrowser()

        resultString=deal("黑客帝国",2018,5,25)

    PS:代码只是实现selenium的初步演示,没有考虑异常及复杂的滚屏处理。另外,这里使用XPath,可读性较差,同时如果网站稍有改版,代码可能需要进一步更新。

  • 相关阅读:
    [Flux] Component / Views
    [Flux] Stores
    [WebStrom] Change default cmd to Cygwin
    [AngularJS] ng-if vs ng-show
    [ES6] Array.find()
    [ES6] Array.findIndex()
    [Javascript] Object.assign()
    [Javascript] Intro to the Web Audio API
    [Falcor] Indroduce to Model
    [Farcol] Introduce
  • 原文地址:https://www.cnblogs.com/daluozi/p/9466887.html
Copyright © 2020-2023  润新知