Python+Selenium模拟登陆知乎
当我登录的时候访问知乎,看到的首页是这样的:
但是当我没有登录的时候,访问知乎首页,看到的是这样的:
而如果我们使用下面的代码访问知乎:
import requests data = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36'} #这里涉及到了user-agent的修改,我们在下一课讲解 source = requests.get('https://zhihu.com', headers=data).text print(source)
我们会发现得到的源代码是图片二的源代码。对于这样的网站,我们需要让爬虫登录网站才能爬取信息。本文将要讲解使用Python模拟登录网站。
使用Selenium来进行模拟登录,整个过程非常的简单,只需要输入账号,输入密码,然后登录即可。流程如下:
以上过程,我们使用Selenium, 在一般情况下只需要不到20行代码。
我们涉及到的代码如下:
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome('./chromedriver') #填写你的chromedriver的路径 driver.get("https://www.zhihu.com/#signin") elem = driver.find_element_by_name("account") #寻找账号输入框 elem.clear() elem.send_keys("yyyyy") #输入账号 password = driver.find_element_by_name('password') #寻找密码输入框 password.clear() password.send_keys("xxxxxx") #输入密码 elem.send_keys(Keys.RETURN) #模拟键盘回车键 time.sleep(10) #大家这里可以直接sleep, 也可以使用上一课讲到的等待某个条件出现 print(driver.page_source) driver.close()
为什么我要强调一般情况呢?那是因为知乎实际上也是有验证码的,只是在一般情况下不需要输入验证码。如果你的IP地址异常,或者你反复多次登录又退出,知乎会认为你的账号异常,这种情况下就会出现验证码。
待续…