python+selenium+chrome QQ空間批量點贊源碼 方法:模擬自動操作

1.先客戶端登上qq。運行代碼,自動登錄 

2.循環(點贊,滾動)

感覺沒有c#寫的好,但是比C#簡單。qq空間不太穩定,可能是網絡不行 電信丟包率40%.

運行日誌:

/Users/xiaohuangrenruanjian/PycharmProjects/mytest/venv/bin/python /Users/xiaohuangrenruanjian/PycharmProjects/mytest/test2.py
QQ空間-分享生活,留住感動
點擊登錄:<span id="img_out_345139427" uin="345139427" type="4" class="img_out"></span>
QQ:345139427
waitting login
登錄成功:深愛着你——My wife [http://345139427.qzone.qq.com]
0點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="38" data-showcount="20" data-unikey="http://user.qzone.qq.com/3164336637/mood/fdf19bbc7345635ebe400800" data-curkey="http://user.qzone.qq.com/3164336637/mood/fdf19bbc7345635ebe400800" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
1點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="1" data-showcount="0" data-unikey="http://user.qzone.qq.com/248043945/mood/a9d9c80e28aa605e9f320000" data-curkey="http://user.qzone.qq.com/248043945/mood/a9d9c80e28aa605e9f320000" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
2點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="0" data-showcount="0" data-unikey="http://user.qzone.qq.com/465169000/mood/68eab91b1318635e0baf0a00" data-curkey="http://user.qzone.qq.com/465169000/mood/68eab91b1318635e0baf0a00" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
3點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="15" data-showcount="15" data-unikey="http://user.qzone.qq.com/1077205961/photo/V13fNaWL3iPNOX/NRMAVjR0eWRzMFFMcjRZbDQ1NkxVYQcAcGhvdG90ag!!" data-curkey="http://user.qzone.qq.com/1077205961/photo/V13fNaWL3iPNOX/NRMAVjR0eWRzMFFMcjRZbDQ1NkxVYQcAcGhvdG90ag!!" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
4點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="23" data-showcount="20" data-unikey="http://user.qzone.qq.com/3545658314/mood/ca7356d379f7625e67d40e00" data-curkey="http://user.qzone.qq.com/3545658314/mood/ca7356d379f7625e67d40e00" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
5點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="11" data-showcount="10" data-unikey="http://user.qzone.qq.com/250393386/mood/2ab3ec0e00d4625e57ad0500" data-curkey="http://user.qzone.qq.com/250393386/mood/2ab3ec0e00d4625e57ad0500" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
6點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="12" data-showcount="10" data-unikey="http://user.qzone.qq.com/250393386/mood/2ab3ec0edbd3625efac60700" data-curkey="http://user.qzone.qq.com/250393386/mood/2ab3ec0edbd3625efac60700" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
7點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="0" data-showcount="0" data-unikey="http://kg.qq.com/zhubo/index.html?roomid=659b9f85252f318830" data-curkey="000077814221001583533555" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
8點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="10" data-showcount="9" data-unikey="http://user.qzone.qq.com/250393386/photo/V113Qwff3KxmAO/NRMAVjR0S3JQc0RyWEhZbDRIMHpZRwcAcGhvdG9neg!!" data-curkey="http://user.qzone.qq.com/250393386/photo/V113Qwff3KxmAO/NRMAVjR0S3JQc0RyWEhZbDRIMHpZRwcAcGhvdG9neg!!" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
9點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="32" data-showcount="20" data-unikey="http://user.qzone.qq.com/1345963553/mood/21c63950d6be625e996c0900" data-curkey="http://user.qzone.qq.com/1345963553/mood/21c63950d6be625e996c0900" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
10點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="1" data-showcount="1" data-unikey="http://user.qzone.qq.com/503707720/photo/V12TY9Wq2YLPbQ/NRMAVjR0U1BnRkhuV1RZbDVNLnlNRgcAcGhvdG90ag!!" data-curkey="http://user.qzone.qq.com/503707720/photo/V12TY9Wq2YLPbQ/NRMAVjR0U1BnRkhuV1RZbDVNLnlNRgcAcGhvdG90ag!!" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
11點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="47" data-showcount="19" data-unikey="http://user.qzone.qq.com/3545658314/mood/ca7356d3a968625e45310900" data-curkey="http://user.qzone.qq.com/3545658314/mood/ca7356d3a968625e45310900" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
12點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="14" data-showcount="12" data-unikey="http://user.qzone.qq.com/1657488557/mood/ad44cb629067625e783f0100" data-curkey="http://user.qzone.qq.com/1657488557/mood/ad44cb629067625e783f0100" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
13點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="122" data-showcount="20" data-unikey="http://user.qzone.qq.com/1751080128/mood/c05c5f689546625e53150000" data-curkey="http://user.qzone.qq.com/1751080128/mood/c05c5f689546625e53150000" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
14點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="51" data-showcount="1" data-unikey="http://user.qzone.qq.com/271858579/mood/933b3410d20e615eb9bb0400" data-curkey="http://user.qzone.qq.com/1503474975/mood/1f359d59d721625ed2460300" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
15點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="0" data-showcount="0" data-unikey="http://user.qzone.qq.com/502529607/mood/47fef31defe3615e1afc0800" data-curkey="http://user.qzone.qq.com/502529607/mood/47fef31defe3615e1afc0800" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
16點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="121" data-showcount="20" data-unikey="http://user.qzone.qq.com/1751080128/mood/c05c5f6838d1615e2ecd0800" data-curkey="http://user.qzone.qq.com/1751080128/mood/c05c5f6838d1615e2ecd0800" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
17點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="10" data-showcount="1" data-unikey="http://user.qzone.qq.com/3545997/mood/8d1b360020ba615e41cb0d00" data-curkey="http://user.qzone.qq.com/3545997/mood/8d1b360020ba615e41cb0d00" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
18點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="0" data-showcount="0" data-unikey="http://user.qzone.qq.com/3262612927/mood/bf8577c2936d5f5e47a10400" data-curkey="http://user.qzone.qq.com/937577500/mood/1c4ce237a999615e9dc80d00" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
19點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="42" data-showcount="20" data-unikey="http://user.qzone.qq.com/1206396753/mood/5127e8474198615e88c80100" data-curkey="http://user.qzone.qq.com/1206396753/mood/5127e8474198615e88c80100" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>
20點贊:<a class="item qz_like_btn_v3 " data-islike="0" data-likecnt="1" data-showcount="1" data-unikey="http://user.qzone.qq.com/2240016440/mood/38f083853391615e6a1e0000" data-curkey="http://user.qzone.qq.com/2240016440/mood/38f083853391615e6a1e0000" data-clicklog="like" href="javascript:;"><i class="fui-icon icon-op-praise"></i></a>

源碼: 

# 先客戶端登上qq
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.by import By

# driver = webdriver.Safari()
driver = webdriver.Chrome("/Users/xiaohuangrenruanjian/Downloads/chromedriver2")
driver.implicitly_wait(10)
driver.get("https://i.qq.com/")
try:
    print(driver.title)
    driver.switch_to.frame("login_frame")
    span = driver.find_element(By.XPATH, '//*[@id="qlogin_list"]/a[1]')
    print('點擊登錄:' + span.get_attribute('outerHTML'))
    span.click()
    qq = span.get_attribute('uin')
    print('QQ:' + span.get_attribute('uin'))

    while driver.title == 'QQ空間-分享生活,留住感動':
        print('waitting login')
        time.sleep(1)
    print('登錄成功:' + driver.title)
    # element = driver.find_element_by_id('tab_menu_friend')
    # print('點擊好友動態:' + element.get_attribute('outerHTML'))
    # element.click()
    # while True: #是否正在加載
    #     time.sleep(2)
    #     try:
    #         element = driver.find_element_by_css_selector(
    #             r'img[src:"http://qzonestyle.gtimg.cn/aoi/img/icenter/loading.gif"]')
    #     except NoSuchElementException:
    #         break

    while True:
        # time.sleep(5)
        elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="like"]')
        # elements = driver.find_elements_by_css_selector('i.fui-icon.icon-op-praise')
        i = 0
        for element in elements:
            # driver.execute_script("arguments[0].scrollIntoView();", element)  # 滾動到元素位可見
            print(str(i)+'/'+str(len(elements)) + '點贊:' + element.get_attribute('outerHTML'))
            i += 1
            driver.execute_script("arguments[0].click();", element)
            # element.click()
            time.sleep(1)
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")  # 滾動到底部

    print(driver.page_source)
    print("wait end")
    time.sleep(10)

except NoSuchElementException:
    print("except")
    pass
else:
    print("else")
finally:
    print("end")
    driver.close()

 

 

優化:使用顯示等待:WebDriverWait(),效果也不好。網絡不行。

# 先客戶端登上qq
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions


# driver = webdriver.Safari()
driver = webdriver.Chrome("/Users/xiaohuangrenruanjian/Downloads/chromedriver2")
# driver.implicitly_wait(10)
driver.get("https://i.qq.com/")
# driver.minimize_window()
try:
    elements = WebDriverWait(driver, 15).until(expected_conditions.presence_of_all_elements_located((By.ID, 'login_frame')))
    print(type(elements))
    print(elements)
    print(driver.title)
    driver.switch_to.frame(elements[0])
    elements = WebDriverWait(driver, 15).until(expected_conditions.presence_of_all_elements_located((By.XPATH, '//*[@id="qlogin_list"]/a[1]')))
    print(type(elements))
    print(elements)
    # element = driver.find_element(By.CLASS_NAME, 'img_out')
    print('點擊登錄:' + elements[0].get_attribute('outerHTML'))
    elements[0].click()
    # elements[0].send_keys(Keys.ENTER)
    qq = elements[0].get_attribute('uin')
    print('QQ:' + elements[0].get_attribute('uin'))

    # elements = WebDriverWait(driver, 15).until_not(
    #     expected_conditions.title_is('QQ空間-分享生活,留住感動'))
    # print(type(elements))
    # print(elements)
    while driver.title == 'QQ空間-分享生活,留住感動':
        print('Waiting for login')
        time.sleep(1)
    print('登錄成功:' + driver.title)
    # element = driver.find_element_by_id('tab_menu_friend')
    # print('點擊好友動態:' + element.get_attribute('outerHTML'))
    # element.click()
    # while True: #是否正在加載
    #     time.sleep(2)
    #     try:
    #         element = driver.find_element_by_css_selector(
    #             r'img[src:"http://qzonestyle.gtimg.cn/aoi/img/icenter/loading.gif"]')
    #     except NoSuchElementException:
    #         break
    g = 0
    while True:
        time.sleep(1)
        # elements = WebDriverWait(driver, 5).until(
        #     expected_conditions.presence_of_all_elements_located((By.CSS_SELECTOR, '.a.item.qz_like_btn_v3[data-clicklog="like"]')))
        # elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="cancellike"]')
        # print(str(len(elements))+"已贊")
        elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="like"]')
        # elements = driver.find_elements_by_css_selector('i.fui-icon.icon-op-praise')
        i = 0
        for element in elements:
            # driver.execute_script("arguments[0].scrollIntoView();", element)  # 滾動到元素位可見
            i += 1
            print(str(i) + '/' + str(len(elements)))
            print(str(i) + '/' + str(len(elements)) + '點贊:' + element.get_attribute('outerHTML'))
            driver.execute_script("arguments[0].click();", element)
            # element.click()
            time.sleep(1)
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")  # 滾動到底部
        g += 1
        print('滾動'+str(g))

    print(driver.page_source)
    print("Waiting for end")
    time.sleep(10)

except NoSuchElementException:
    print("except")
    pass
else:
    print("else")
finally:
    print("end")
    driver.close()

優化2:不顯示圖片,加快速度

# 先客戶端登上qq
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values": {"images": 2}}
options.add_experimental_option("prefs", prefs)
# driver = webdriver.Safari()
driver = webdriver.Chrome("/Users/xiaohuangrenruanjian/Downloads/chromedriver2",chrome_options=options)
# driver.implicitly_wait(10)
driver.get("https://i.qq.com/")
# driver.minimize_window()
try:
    elements = WebDriverWait(driver, 15).until(
        expected_conditions.presence_of_all_elements_located((By.ID, 'login_frame')))
    print(type(elements))
    print(elements)
    print(driver.title)
    driver.switch_to.frame(elements[0])
    elements = WebDriverWait(driver, 15).until(
        expected_conditions.presence_of_all_elements_located((By.XPATH, '//*[@id="qlogin_list"]/a[1]')))
    print(type(elements))
    print(elements)
    # element = driver.find_element(By.CLASS_NAME, 'img_out')
    print('點擊登錄:' + elements[0].get_attribute('outerHTML'))
    elements[0].click()
    # elements[0].send_keys(Keys.ENTER)
    qq = elements[0].get_attribute('uin')
    print('QQ:' + elements[0].get_attribute('uin'))

    # elements = WebDriverWait(driver, 15).until_not(
    #     expected_conditions.title_is('QQ空間-分享生活,留住感動'))
    # print(type(elements))
    # print(elements)
    while driver.title == 'QQ空間-分享生活,留住感動':
        print('Waiting for login')
        time.sleep(1)
    print('登錄成功:' + driver.title)
    # element = driver.find_element_by_id('tab_menu_friend')
    # print('點擊好友動態:' + element.get_attribute('outerHTML'))
    # element.click()
    # while True: #是否正在加載
    #     time.sleep(2)
    #     try:
    #         element = driver.find_element_by_css_selector(
    #             r'img[src:"http://qzonestyle.gtimg.cn/aoi/img/icenter/loading.gif"]')
    #     except NoSuchElementException:
    #         break
    g = 0
    while True:
        time.sleep(1)
        # elements = WebDriverWait(driver, 5).until(
        #     expected_conditions.presence_of_all_elements_located((By.CSS_SELECTOR, '.a.item.qz_like_btn_v3[data-clicklog="like"]')))
        # elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="cancellike"]')
        # print(str(len(elements))+"已贊")
        elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="like"]')
        # elements = driver.find_elements_by_css_selector('i.fui-icon.icon-op-praise')
        i = 0
        for element in elements:
            # driver.execute_script("arguments[0].scrollIntoView();", element)  # 滾動到元素位可見
            i += 1
            print(str(i) + '/' + str(len(elements)))
            print(str(i) + '/' + str(len(elements)) + '點贊:' + element.get_attribute('outerHTML'))
            driver.execute_script("arguments[0].click();", element)
            # element.click()
            time.sleep(1)
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")  # 滾動到底部
        g += 1
        print('滾動' + str(g))

    print(driver.page_source)
    print("Waiting for end")
    time.sleep(10)

except NoSuchElementException:
    print("except")
    pass
else:
    print("else")
finally:
    print("end")
    driver.close()

優化4:定時刷新

# 先客戶端登上qq
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values": {"images": 2}}
options.add_experimental_option("prefs", prefs)
# 設置chrome瀏覽器無界面模式
# options.add_argument('--headless')
# driver = webdriver.Safari()
driver = webdriver.Chrome("/Users/xiaohuangrenruanjian/Downloads/chromedriver2", options=options)
# driver.implicitly_wait(10)
driver.get("https://i.qq.com/")
# driver.minimize_window()
try:
    elements = WebDriverWait(driver, 15).until(
        expected_conditions.presence_of_all_elements_located((By.ID, 'login_frame')))
    print(type(elements))
    print(elements)
    print(driver.title)
    driver.switch_to.frame(elements[0])
    elements = WebDriverWait(driver, 15).until(
        expected_conditions.presence_of_all_elements_located((By.XPATH, '//*[@id="qlogin_list"]/a[1]')))
    print(type(elements))
    print(elements)
    # element = driver.find_element(By.CLASS_NAME, 'img_out')
    print('點擊登錄:' + elements[0].get_attribute('outerHTML'))
    elements[0].click()
    # elements[0].send_keys(Keys.ENTER)
    qq = elements[0].get_attribute('uin')
    print('QQ:' + elements[0].get_attribute('uin'))

    # elements = WebDriverWait(driver, 15).until_not(
    #     expected_conditions.title_is('QQ空間-分享生活,留住感動'))
    # print(type(elements))
    # print(elements)
    while driver.title == 'QQ空間-分享生活,留住感動':
        print('Waiting for login')
        time.sleep(1)
    print('登錄成功:' + driver.title)
    # element = driver.find_element_by_id('tab_menu_friend')
    # print('點擊好友動態:' + element.get_attribute('outerHTML'))
    # element.click()
    # while True: #是否正在加載
    #     time.sleep(2)
    #     try:
    #         element = driver.find_element_by_css_selector(
    #             r'img[src:"http://qzonestyle.gtimg.cn/aoi/img/icenter/loading.gif"]')
    #     except NoSuchElementException:
    #         break
    g = 0
    while True:
        time.sleep(1)
        # elements = WebDriverWait(driver, 5).until(
        #     expected_conditions.presence_of_all_elements_located((By.CSS_SELECTOR, '.a.item.qz_like_btn_v3[data-clicklog="like"]')))
        # elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="cancellike"]')
        # print(str(len(elements))+"已贊")
        elements = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3[data-clicklog="like"]')
        # elements = driver.find_elements_by_css_selector('i.fui-icon.icon-op-praise')
        i = 0
        for element in elements:
            # driver.execute_script("arguments[0].scrollIntoView();", element)  # 滾動到元素位可見
            i += 1
            print(str(i) + '/' + str(len(elements)))
            print(str(i) + '/' + str(len(elements)) + '點贊:' + element.get_attribute('outerHTML'))
            driver.execute_script("arguments[0].click();", element)
            # element.click()
            time.sleep(1)
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")  # 滾動到底部
        g += 1
        print('滾動' + str(g))
        if g >= 100:
            g = 0
            driver.refresh()

    print(driver.page_source)
    print("Waiting for end")
    time.sleep(10)

except NoSuchElementException:
    print("except")
    pass
else:
    print("else")
finally:
    print("end")
    driver.close()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章