How to use selenium

python 异步爬取库selenium使用记录

简介

  • 1 在做基于python的知乎用户信息特征爬虫系统中,遇到了个人信息需要点击 查看详细资料后 页面才能渲染出所有我所需要的用户信息。对于基于异步请求的动态网页爬虫,在研究了相关资料后发现这个暴力牛逼的包selenium,相对简单实用。简单来说就是模拟人为对浏览器的动作,比如:点击事件,填写表单等。这样就能克服操作我们传统爬虫只能爬取静态网页,得不到异步请求渲染后的网页信息。具体安装如下:

    安装selenium(python3.5,window10环境下)

  • 1.通过pip安装

pip install selenium

安装浏览器驱动chromedriver(以google为例)

  • 2.解压chromedriver.zip文件
    将里面的chromedriver.exe文件拷贝到谷歌浏览器的安装目录下:

    C:\Program Files (x86)\Google\Chrome\Application

  • 3.配置环境变量

    打开:我的电脑->属性->高级系统设置->环境变量
    打开path
    在最后面添加 ;C:\Program Files (x86)\Google\Chrome\Application

    1. 测试

      打开python编辑器 如pyCharm 编辑代码:

      chromedriver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”
      os.environ[“webdriver.chrome.driver”] = chromedriver
      driver = webdriver.Chrome(chromedriver)
      driver.get(‘http://www.baidu.com‘)

      如果跳出google浏览器,且为百度页面则安装成功。不知道为什么其他博客只需要:

      driver = webdriver.Chrome()
      driver.get(‘http://www.baidu.com‘)

便能成功。而且我环境变量也已经配置。不知道啥原因,有待研究下。

———————————————————————————————

selenium使用记录

模拟知乎登录(具体使用查看文档

  • ###a先实例化一个driver

    chrome_driver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”

    os.environ["webdriver.chrome.driver"] = chrome_driver
    driver = webdriver.Chrome(chrome_driver)
    
  • ###b 登录知乎,亲自测试可行:

    driver.get(“http://www.zhihu.com“) #打开知乎我们要登录
    time.sleep(2) #让操作稍微停一下
    driver.find_element_by_link_text(‘登录’).click() #找到‘登录’按钮并点击
    time.sleep(2) # 找到输入账号的框,并自动输入账号 这里要替换为你的登录账号
    driver.find_element_by_name(‘account’).send_keys(‘你的账号’)
    time.sleep(2)# 密码,这里要替换为你的密码
    driver.find_element_by_name(‘password’).send_keys(‘你的密码’)
    time.sleep(2)# 输入浏览器中显示的验证码,这里如果知乎让你找烦人的倒立汉字,手动登录一下,再停止程序,退出#浏览器,然后重新启动程序,直到让你输入验证码
    yanzhengma=input(‘验证码:’) #现在好像不需要验证码
    driver.find_element_by_name(‘captcha’).send_keys(yanzhengma) # 找到登录按钮,并点击
    driver.find_element_by_css_selector(‘div.button-wrapper.command > button’).click()

  • ###c 使用driver.page_source 可以获得实际操作后的页面源码。而requests库只能获得打开连接的静态网页。
    如:html = driver.page_source
    接下来就可以使用BeautifulSoup库来自由操作了。