python爬虫六(副本):selenium的使用

1、利用cookies登录qq空间获得源码

1.1直接利用python数据格式获得cookie模拟登录

from selenium import webdriver
import time
import requests

driver = webdriver.Chrome()
driver.get('https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=手机QQ空间&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0')
button = driver.find_element_by_class_name("img_out_focus")#不是找的图片,注意找正确的属性#只要找到位置即可,不用找其他,注意赋值的时候变量的属性
button.click()
time.sleep(6)
cookies = driver.get_cookies()
cookie = [item['name']+'='+item['value'] for item in cookies]
cookie = '; '.join(item for item in cookie)
print(cookie)
'''
携带cookies去获得数据,不携带cookie获得的是一个背景截图
'''
url = 'https://user.qzone.qq.com/1041184302'
headers = {
    'cookie':'Loading=Yes; fnc=2; pt4_token=Qg59FqMXPsCidXXYOuWC8lZVUSwQ1My*YkRIkKgRfV0_; p_uin=o1041184302; _qpsvr_localtk=0.5051512900521125; skey=@PPH4Wi1a9; ptcz=e658ec439ad5071fa15bbb54a61e307e8047fa42e02499ce3a60afb7a1dce300; uin=o1041184302; RK=qcpZZstXbP; pgv_si=s3619742720; p_skey=yEYI8NLcbjjk5RwqxqIl*tweQUFV9LTVPBURaTv1y94_; pgv_pvi=5814917120',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
html = requests.get(url,headers=headers)
print(html.status_code,html.text)

1.2利用json数据格式,做处理的模式

from selenium import webdriver
import json

driver = webdriver.Chrome()
driver.get('https:www.baidu.com/')
cookies = driver.get_cookies() # Returns a set of dictionaries
# print(type(cookies),cookies)#list,列表中的一些字典
jsonCookies = json.dumps(cookies) # json.dumps()将python数据结构转化为JSON
# print(type(jsonCookies),jsonCookies)#str,内容不变
'''
第一步:将数据保存到一个json文件当中
先保存后处理
第二步:处理cookies的数据格式获得cookie
'''
# with open('qqzone.json','w')as f:
#     f.write(jsonCookies)
with open('qqzone.json','r',encoding='utf-8') as f:
    listCookies = json.loads(f.read())
cookie = [item['name'] + '=' + item['value'] for item in listCookies]
cookieStr = '; '.join(item for item in cookie)

# print('*'*50)
# print(driver.get_cookie('BD_HOME')) # 通过value来获得
# driver.delete_cookie('BD_HOME') # 通过value来删除
#
# from selenium import webdriver
# import time
#
# driver = webdriver.Chrome()
# driver.get('https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=手机QQ空间&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0')
# button = driver.find_element_by_class_name("img_out_focus")#不是找的图片,注意找正确的属性#只要找到位置即可,不用找其他,注意赋值的时候变量的属性
# button.click()
# time.sleep(5)
# print(driver.current_url)

2、登录qq邮箱

from selenium import webdriver
import time
from configparser import ConfigParser

obj1 = ConfigParser()
obj1.read('up.ini')
users = obj1.get('username','user')
password = obj1.get('username','password')
driver = webdriver.Chrome()
driver.get('https://mail.qq.com/')
login_frame = driver.find_element_by_id('login_frame')
# 切换iframe
driver.switch_to.frame(login_frame)
driver.find_element_by_id('switcher_plogin').click()
time.sleep(2)
driver.find_element_by_id('u').send_keys(users)
driver.find_element_by_id('p').send_keys(password)
time.sleep(2)
driver.find_element_by_id('login_button').click()

3、模拟登录淘宝并提交订单

from selenium import webdriver
import time,datetime
def login():
    # 进入淘宝
    driver.get('https://www.taobao.com/')
    # 点击登陆
    driver.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
    time.sleep(9)
    # 进入购物车界面
    driver.get(' https://cart.taobao.com/cart.htm')
    now = datetime.datetime.now()
    print('登陆成功,当前的时间为',now.strftime('%Y-%m-%d %H:%M:%S'))
# 定义一个函数开始购买
def buy(times): # >
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f')
        if now >times:
            # 点击全选
            while True:
                try:
                    if driver.find_element_by_xpath('//*[@id="J_SelectAll1"]/div'):
                        driver.find_element_by_xpath('//*[@id="J_SelectAll1"]/div').click()
                        break
                except:
                    print('找不到全选按钮')
            # 点击结算按钮
            time.sleep(1)
            while True:
              try:
                    if driver.find_element_by_xpath('//*[@id="J_Go"]/span'):
                        driver.find_element_by_xpath('//*[@id="J_Go"]/span').click()
                        break
                except:
                    print('找不到结算按钮')
            # 提交订单按钮
            time.sleep(3)
            while True:
                try:
                    if driver.find_element_by_xpath('//*[@id="submitOrderPC_1"]/div/a[2]'):
                        driver.find_element_by_xpath('//*[@id="submitOrderPC_1"]/div/a[2]').click()
                        break
                except:
                    print('找不到提交订单按钮')
if __name__ == '__main__':
    times = input('请输入请购的时间:') # 22:00
    driver = webdriver.Chrome()
    login()
    buy(times)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值