淘宝 selenium模拟自动获取二维码

 闲着没事, 用selenium来模拟一下自动扫码登录, 代码是很简单的, 但是获取元素的时候, 有点迷惑了,很尴尬, selenium打开网页的时候是有  二维码的 src属性的, 但是 xpath匹配的时候却  死活提取不到, 很不理解啊, 原来以为有 iframe标签, 但是检查了一下, 什么都没有啊, 保存到本地的 html 文本也是有标签的。 最后只能这样来提取了!!!

driver.find_element_by_id("J_QRCodeImg").find_element_by_tag_name("img").get_attribute("src")

哪位大佬给我解解惑呗 !!! 

下面这个就是死活提取不到的玩意

driver.find_element_by_xpath("//div[@id='J_QRCodeImg']/img/@src").text

 。

from selenium import webdriver
import time


def login():
    driver.get("https://www.taobao.com")
    driver.maximize_window()
    if driver.find_element_by_link_text("亲,请登录"):
        """ 提取文本定位 如果用元素定位这里面比较麻烦, 当然元素定位绝对是可以的"""
        driver.find_element_by_link_text("亲,请登录").click()
    time.sleep(1)
    if driver.find_element_by_id("J_QRCodeImg"):
        # 定位到二维码图片
        print ('====已定位到二维码图片====')
        img_html = driver.find_element_by_id("J_QRCodeImg").get_attribute('innerHTML')
        print(img_html)        # <img src="//img.alicdn.com/tfscom/TB1kaM4CSzqK1RjSZFLwu3n2XXa.png">  获取元素的 html文本内容
        print(type(img_html))  # <class 'str'>
        """
          # xpath 定位
          img_html2 = driver.find_element_by_xpath("//*[@id='J_QRCodeImg']").get_attribute('innerHTML')
          print(img_html2)
       """
        print(driver.find_element_by_xpath("//div[@class='footer-hd']/p/a[6]").get_attribute("innerHTML"))
        print(driver.find_element_by_xpath("//div[@class='footer-hd']/p/a[6]").text)
        # 但是我测试了获取这个标签的html文本内容, 却没有获取到, 获取的还是文本、 有点迷茫  还望大神们指教

        print(driver.find_element_by_id("J_QRCodeImg").find_element_by_tag_name("img").get_attribute("src"))
        print("===提取二维码图片的链接===")

        # print(driver.find_element_by_xpath("//div[@id='J_QRCodeImg']/img/@src").text)
        # 这个是元素定位不到的 感觉很奇怪啊, 为啥没有呢

        # with open("./taobao.html", "w", encoding="utf-8") as f:
        #     f.write(driver.page_source)
        #  这个怎么保存成 html 不让它乱码  encoding = "gbk" 不行啊 网页是gbk的
        print(driver.find_element_by_id("J_QRCodeImg").find_element_by_tag_name("img").get_attribute("src"))

        url2 = driver.find_element_by_id("J_QRCodeImg").find_element_by_tag_name("img").get_attribute("src")
        # 二维码链接, 直接获取就是完整的了  但是网页上是这  <img src="//img.alicdn.com/tfscom/TB1sMleCVzqK1RjSZFCwu2bxVXa.png">
        print(url2)  # https://img.alicdn.com/tfscom/TB1sMleCVzqK1RjSZFCwu2bxVXa.png
        driver.get(url2)
    while True:
        try:
            if driver.find_element_by_link_text("密码登录"):
                print("请扫码登录...")
                time.sleep(1)
        except:
            print ("成功登录...")
            print (driver.current_url)
            break
    time.sleep(1)
    
if __name__ == '__main__':
    driver = webdriver.Chrome()
    login()

猜你喜欢

转载自blog.csdn.net/chang995196962/article/details/86552546