Python 爬虫10:模拟登录

该部分完成于2019年12月,经检查可以正常运行。
一、使用Selenium模拟登录
(一)模拟动态登录百度页面流程
初始化chromedriver
打开百度登录页面
找到用户名的输入框,输入用户名
找到密码输入框,输入密码
按下回车键

(二)网页分析
1.访问到百度页面后,需要模拟点击“登录”按钮。找到“登录”按钮的元素如下所示:
在这里插入图片描述
根据id = ‘u1’和class=’lb’找到“登录”按钮

登录百度网页code
from selenium import webdriver
import time
driver = webdriver.Chrome()# 1.打开浏览器
url = "https://www.baidu.com/"# 2.设置地址
driver.get(url)# 3.访问网址
# 4.分析网页,找到登录元素
# login = driver.find_elements_by_id('u1').find_elements_by_class_name('lb')[0]   #方法一
login = driver.find_elements_by_css_selector('div[id=u1] a[class=lb]')[0]   #方法二
login.click()#5.点击登录按钮

2.模拟点击“用户名登录”
接下来需要模拟点击“用户名登录”按钮,找到“用户名登录”按钮的元素如下所示:
在这里插入图片描述
在这里插入图片描述
注意,这个上述两张图片,要根据百度网站进行修改。
根据p标签下的class=”tang-pass-footerBarULogin pass-link”找到用户名登录,注意这个class里有两个同级类名,中间有个空格,在css选择器里写的时候就只需要写一个类名就行,否则中间有空格,如果写成’p.tang-pass-footerBarULogin pass-link’,就表示p标签下的类名为tang-pass-footerBarULogin的下一个类名为pass-link的类。

模拟点击“用户名登录”code
#点击之后要加等待时间
time.sleep(2)
#6.找到登录界面的 用户名登录
#选择p标签下的class,<p class="tang-pass-footerBarULogin pass-link">
usernamelogin = driver.find_elements_by_css_selector('p.tang-pass-footerBarULogin')[0]
#7.点击它,进入账号密码输入界面
usernamelogin.click()

注意chromedriver版本和Chrome浏览器版本一致,可以在Chrome浏览器地址栏输入chrome://version/查看版本,然后在镜像网站上根据浏览器版本查找chromedriver版本
Mirror index of http://chromedriver.storage.googleapis.com/,解决code代码显示两者不一致的问题。

点击“用户名登录”后,进入输入账号和密码界面。
找到账号输入框的元素如下所示:
在这里插入图片描述

#点击之后要加等待时间
time.sleep(2)
#8.找到 输入 用户名 和密码框,并且设置内容
#<input id="TANGRAM__PSP_10__userName">
username = driver.find_element_by_id('TANGRAM__PSP_11__userName')
username.send_keys('XXXXXX')#输入账号名

time.sleep(1)
#<input id="TANGRAM__PSP_10__password">
password = driver.find_element_by_id('TANGRAM__PSP_11__password')
password.send_keys('XXXXXX')#输入密码

time.sleep(1)
#<input id="TANGRAM__PSP_10__submit">
submit = driver.find_element_by_id('TANGRAM__PSP_11__submit')
submit.click()

(三)最终代码

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()# 1.打开浏览器
url = "https://www.baidu.com/"# 2.设置地址
driver.get(url)# 3.访问网址
# 4.分析网页,找到登录元素
login = driver.find_element_by_id('u1').find_elements_by_class_name('lb')[0]   #方法一
#login = driver.find_elements_by_css_selector('div[id=u1] a[class=lb]')[0]   #方法二
login.click()#5.点击登录按钮
time.sleep(5)
#6.找到登录界面的 用户名登录
#选择p标签下的class,<p class="tang-pass-footerBarULogin pass-link">
usernamelogin = driver.find_elements_by_css_selector('p.tang-pass-footerBarULogin')[0]
#7.点击它,进入账号密码输入界面
usernamelogin.click()

#点击之后要加等待时间
time.sleep(5)
#8.找到 输入 用户名 和密码框,并且设置内容
#<input id="TANGRAM__PSP_11__userName">
username = driver.find_element_by_id('TANGRAM__PSP_11__userName')
username.send_keys('   ')#输入账号名

time.sleep(5)
#<input id="TANGRAM__PSP_11__password">
password = driver.find_element_by_id('TANGRAM__PSP_11__password')
password.send_keys('   ')#输入密码

time.sleep(5)
#<input id="TANGRAM__PSP_11__submit">
submit = driver.find_element_by_id('TANGRAM__PSP_11__submit')
submit.click()

二、模拟鼠标点击搜索百度资讯新闻

from selenium import webdriver
import time
L = range(1, 10, 1)   #先获得搜索10页的新闻
#使用webdriver.Chrome()函数使Python自动打开Chrome浏览器
driver =webdriver.Chrome()
#自动点击下一页需要loop,本次使用for循环"        &pn="+str((i-1)*10)
keywd="瑞华会计师事务所事件"
for i in L:
    url = "https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&word="+keywd+"&x_bfe_rqs=03E80&x_bfe_tjscore=0.488501&tngroupname=organic_news&rsv_dl=news_b_pn&pn="+str((i-1)*10).format(i)
    driver.get(url)
    #每隔5s打开下一页
    time.sleep(5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计量小虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值