查看原文
其他

Selenium登录豆瓣

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王碧琪

文字编辑:钱梦璇

技术总编:张   邯


爬虫俱乐部将于2020年1月5日至11日湖北武汉举行为期一周的Stata编程技术定制培训,此次采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~详细培训大纲及报名方式,请点击《爬虫俱乐部2020第一期Stata编程训练营开始报名啦!》或点击文末阅读原文呦~


      Selenium即浏览器自动化测试框架,是一个用于web应用程序测试的工具。使用selenium时,就好像真的有用户在操作一样。之前我们在推文《Python爬虫之selenium爬取国际自然科学基金数据库(一)》中介绍了selenium的安装和配置,今天小编尝试用它来登录豆瓣。

      最终的驱动谷歌浏览器爬虫过程如下:


(一)进入链接

 首先我们找到豆瓣登陆的链接https://accounts.douban.com/passport/login?source=movie我们把Chromedriver配置好,并且对浏览器进行初步的设置。

from selenium import webdriverdriver=webdriver.Chrome() driver.set_window_position(0,0) #设置浏览器窗口位置为(0,0)driver.maximize_window() #设置窗口最大化url="https://accounts.douban.com/passport/login?source=movie" #输入链接driver.get(url) #进入链接

      这样我们就进入了豆瓣登录界面。


(二)选择“密码登录”

      我们可以看到,默认情况下,登录方式为“短信登录/注册”,而我们想要通过密码登录,那么就要采用selenium的鼠标动作来进行click。

      Selenium的定位元素方式有多种,可以参考《Python爬虫之selenium爬取国际自然科学基金数据库(二)》,此处我们采用xpath定位。为了找到“密码登录”对应的xpath,我们按住“F12”打开开发者模式,选择Elements,使用ctrl+F进行查找,输入“密码登录”,可以看到有一行代码高亮。选中这行代码,右键选择copy中的copy xpath,即可得到我们所需的xpath了。

from selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysimport timedriver.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[1]/ul[1]/li[2]').click()time.sleep(5) #休息5秒,等待网页跳转

      现在我们就进入了“密码登录”对应的界面。


(三)输入账号和密码进行登录

      接下来我们输入账号和密码,再点击“登录豆瓣”,即可登录。输入账号、输入密码、密码登录对应的xpath我们可以采用上述相同的鼠标点击copy xpath,也可以使用xpath helper 插件进行辅助。

user='账号' #替换成你的豆瓣账号password='密码' #替换成你的豆瓣密码
input1=driver.find_element_by_xpath("//input[@id='username']") #定位到输入账号框内input1.clear() #清除框中内容input1.send_keys(user) #填入账号input2=driver.find_element_by_xpath("//input[@id='password']") #定位到输入密码框内input2.clear() #清除框中内容input2.send_keys(password) #填入密码driver.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[2]/div[1]/div[4]/a').click() #点击 “登录豆瓣”

      这样我们就成功登录了豆瓣,避免了每次输入账户密码的麻烦。


      完整程序如下:

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysimport timedriver=webdriver.Chrome()driver.set_window_position(0,0)driver.maximize_window()url="https://accounts.douban.com/passport/login?source=movie"driver.get(url)driver.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[1]/ul[1]/li[2]').click()time.sleep(5)user='账号'password='密码'input1=driver.find_element_by_xpath("//input[@id='username']")input1.clear()input1.send_keys(user)input2=driver.find_element_by_xpath("//input[@id='password']")input2.clear()input2.send_keys(password)driver.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[2]/div[1]/div[4]/a').click()time.sleep(5) #休息5秒等待网页跳转driver.close() #关掉浏览器

      由上可见,selenium可以模仿用户,输入账号、密码,点击鼠标,而它的强大功能远不止这些,我们也可以将其与数据抓取结合起来,进行自动化爬取数据。大家感兴趣的话,快来试一下吧!



对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
       cngcode和cnaddress新鲜出炉!

数据长、宽整型之另辟蹊径

10分钟带你走进宝藏数据库BvD

实战演练——爱婴医院中莆田系医院数据分析(二)

实战演练——爱婴医院中莆田系医院数据分析(一)

给你一个贴心的reshape应用

asrol命令——让你的描述性统计信息滚动起来

Python带你看文献—xpath抓取知网文献

您有一份天气预报待签收 

听说会Stata的人,数学不会太差?

批量修改路径

妙用正则表达式--Python中的re模块

为了辅导作业,这位家长竟然...

走进列表的世界——列表方法(二)

走进列表的世界——列表方法(一)

朝花夕拾|长宽数据转换——reshape命令

Stata有音乐包啦!


关于我们

微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存