百度自动登录
找到登录按钮
from selenium import webdriver import time # 1.使用谷歌浏览器访问百度首页 bro = webdriver.Chrome() bro.get(\'https://www.baidu.com/\') # 2.查找页面上的登录按钮 login_tag = bro.find_element_by_id(\'s-top-loginbtn\') # 3.点击登录按钮 time.sleep(0.5) login_tag.click() \'\'\'延迟等待:页面数据有时候需要时间加载 但是代码不会自动等\'\'\' time.sleep(3)
选择类型并登录
# 4.查找点击短信登录按钮 message_tag = bro.find_element_by_id(\'TANGRAM__PSP_11__changeSmsCodeItem\') message_tag.click() time.sleep(0.5) # 5.查找手机号输入框并填写内容 phone_tag = bro.find_element_by_id(\'TANGRAM__PSP_11__smsPhone\') phone_tag.send_keys(18818188888) time.sleep(0.5) # 6.查找发送验证码按钮并点击 btn_tag = bro.find_element_by_id(\'TANGRAM__PSP_11__smsTimer\') btn_tag.click() time.sleep(0.5) # 7.查找并点击登录按钮 submit_tag = bro.find_element_by_id(\'TANGRAM__PSP_11__smsSubmit\') submit_tag.click() time.sleep(0.5) bro.close()
延时等待
有时候我们在访问网站数据的时候,加载需要一定的时间 没有加载完全的情况下代码极其容易报错
此时需要我们的等待页面数据加载完毕,如何精确等待?
bro.implicitly_wait(10)
京东商品数据
商品数据的展示页存在动态加载的情况,需要往下滚动
window.document.body.scrollHeight # 当前页面屏幕高度
window.scrollTo # 滚动到指定位置
代码
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
bro = webdriver.Chrome()
# 1.访问京东首页
bro.get(\'https://www.jd.com/\')
bro.implicitly_wait(10) # 延时等待
# 2.查找搜索款并输入商品名称
search_input = bro.find_element_by_id(\'key\')
search_input.send_keys(\'显卡\')
# 3.按下enter键进入商品展示页
search_input.send_keys(Keys.ENTER)
# 由于数据存在滚动加载的现象
for i in range(0, 8000, 1000): # 千万不能直接到底 一定要有一个波段
bro.execute_script(\'window.scrollTo(0,%s)\' % i)
time.sleep(0.5)
good_list = bro.find_elements_by_css_selector(\'li.gl-item\')
# 循环获取每一个li标签 筛选所需数据
for li in good_list:
# 图标标签的src属性
img_tag = li.find_element_by_css_selector(\'div.p-img a img\')
img_src = img_tag.get_attribute(\'src\')
\'\'\'img标签的src属性存在懒加载现象 src没有就在data-lazy-img属性下\'\'\'
if not img_src:
img_src = \'https:\' + img_tag.get_attribute(\'data-lazy-img\')
# 商品价格
price_tag = li.find_element_by_css_selector(\'div.p-price strong\')
order_price = price_tag.text
# 商品描述
desc_tag = li.find_element_by_css_selector(\'div.p-name a em\')
order_desc = desc_tag.text
# 商品链接
link_tag = li.find_element_by_css_selector(\'div.p-name a\')
order_link = link_tag.get_attribute(\'href\')
# 商品销量
commit_tag = li.find_element_by_css_selector(\'div.p-commit strong a\')
order_commit = commit_tag.text
# 店铺名称
shop_tag = li.find_element_by_css_selector(\'div.p-shop span a\')
shop_name = shop_tag.text
# 店铺链接
shop_link = shop_tag.get_attribute(\'href\')
# 通过打印展示数据 也可以数据持久化到表格文件
print("""
商品描述:%s
商品价格:%s
商品图片:%s
商品链接:%s
店铺名称:%s
店铺链接:%s
""" % (order_desc, order_price, img_src, order_link, shop_name, shop_link))
bro.close()
知乎登录
思路
1.电脑端知乎不登陆是无法直接访问首页的
2.network监控发送登录请求体数据为加密
加密的代码关键字:encrypt
解密的代码关键字:decrypt
3.搜索关键字encrypt通过断点调试查看到内部真实数据
client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=+8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https://www.zhihu.com/signin?next=%2F