python+selenium+chrome QQ空间批量点赞源码 方法:模拟自动操作
生活随笔
收集整理的這篇文章主要介紹了
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:# breakwhile 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 = 0for element in elements:# driver.execute_script("arguments[0].scrollIntoView();", element) # 滾動到元素位可見print(str(i)+'/'+str(len(elements)) + '點贊:' + element.get_attribute('outerHTML'))i += 1driver.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:# breakg = 0while 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 = 0for element in elements:# driver.execute_script("arguments[0].scrollIntoView();", element) # 滾動到元素位可見i += 1print(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 += 1print('滾動'+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_conditionsoptions = 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:# breakg = 0while 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 = 0for element in elements:# driver.execute_script("arguments[0].scrollIntoView();", element) # 滾動到元素位可見i += 1print(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 += 1print('滾動' + 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_conditionsoptions = 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:# breakg = 0while 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 = 0for element in elements:# driver.execute_script("arguments[0].scrollIntoView();", element) # 滾動到元素位可見i += 1print(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 += 1print('滾動' + str(g))if g >= 100:g = 0driver.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()?
總結
以上是生活随笔為你收集整理的python+selenium+chrome QQ空间批量点赞源码 方法:模拟自动操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch 调参
- 下一篇: Maven — maven filter