【selenium应用实践】怎样实现自动监测百度收录站点链接数量
生活随笔
收集整理的這篇文章主要介紹了
【selenium应用实践】怎样实现自动监测百度收录站点链接数量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用selenium實現自動監測百度收錄站點鏈接數量,SEO優化效果追蹤更輕松
- 安裝依賴
- 創建瀏覽器實例
- 訪問百度引擎并自動輸入site:【域名】后自動點擊搜索按鈕
- 通過xpath獲取收錄數量字符串并用正則匹配出收錄數量
- 最后將爬取結果自動發送到企業微信群,實現自動報告收錄數據的目的
- 最后,為了達到定時自動報告的目的,我加了一個循環,每隔一小時就自動爬取一次并發送收錄結果,完整代碼如下:
前段時間寫了一篇文章介紹了使用python爬蟲自動抓取百度site:命令的結果,但那個方案有個問題是不穩定,而且只是判斷了是否收錄,具體收錄了多少個鏈接不清楚,這無法達到持續關注收錄數量是否有增加的目的,于是用selenium寫了這個實現方案,可以精準監測收錄數量
安裝依賴
import json from selenium.webdriver.chrome.service import Service from selenium import webdriver from selenium.webdriver.common.by import By import re import requests from lxml import etree import time創建瀏覽器實例
myService = Service(r'./../chromedriver') options = webdriver.ChromeOptions() # options.add_argument('headless') #如果想不彈出瀏覽器則加上這項配置 myChrome = webdriver.Chrome(service=myService, options=options) myChrome.implicitly_wait(10)訪問百度引擎并自動輸入site:【域名】后自動點擊搜索按鈕
domain = 'jentian.com' myChrome.get('https://www.baidu.com') keywordInput = myChrome.find_element(By.ID, 'kw') keywordInput.send_keys('site:' + domain) searchBtn = myChrome.find_element(By.ID, 'su') searchBtn.click()通過xpath獲取收錄數量字符串并用正則匹配出收錄數量
time.sleep(3) # 點擊搜索按鈕后要過一會再對頁面文本進行解析, 因為需要時間跳轉及加載內容 dom = etree.HTML(myChrome.page_source) resultStringArr = dom.xpath('//*[@id="content_left"]/div[1]/div/p[1]/b/text()') resultCount = 0 if len(resultStringArr) > 0:resultCountString = resultStringArr[0]resultCountGroup = re.compile(r'\d+').findall(resultCountString)if resultCountGroup:resultCount = ''.join(resultCountGroup) if int(resultCount) > 0:msg = '百度已收錄' + domain + ',收錄數量:' + str(resultCount) else:msg = '百度未收錄' + domain print('抓取完畢!!!', msg, '\n')最后將爬取結果自動發送到企業微信群,實現自動報告收錄數據的目的
qiWeiWebHook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=**'#請自動替換成自己的webhook鏈接 postHeaders = {'Content-Type': 'application/json' } msgData = {"msgtype": "text","text": {"content": msg} } requests.post(qiWeiWebHook, headers=postHeaders, data=json.dumps(msgData))最后,為了達到定時自動報告的目的,我加了一個循環,每隔一小時就自動爬取一次并發送收錄結果,完整代碼如下:
#通過抓取某個域名的site指令結果,判斷是否已被百度收錄代碼 import json from selenium.webdriver.chrome.service import Service from selenium import webdriver from selenium.webdriver.common.by import By import re import requests from lxml import etree import timedef crawlBaiduPickupData():myService = Service(r'./../chromedriver')options = webdriver.ChromeOptions()# options.add_argument('headless') #如果想不彈出瀏覽器則加上這項配置myChrome = webdriver.Chrome(service=myService, options=options)myChrome.implicitly_wait(10)domain = 'jentian.com'while True:myChrome.get('https://www.baidu.com')keywordInput = myChrome.find_element(By.ID, 'kw')keywordInput.send_keys('site:' + domain)searchBtn = myChrome.find_element(By.ID, 'su')searchBtn.click()time.sleep(3) # 點擊搜索按鈕后要過一會再對頁面文本進行解析, 因為需要時間跳轉及加載內容dom = etree.HTML(myChrome.page_source)resultStringArr = dom.xpath('//*[@id="content_left"]/div[1]/div/p[1]/b/text()')resultCount = 0if len(resultStringArr) > 0:resultCountString = resultStringArr[0]resultCountGroup = re.compile(r'\d+').findall(resultCountString)if resultCountGroup:resultCount = ''.join(resultCountGroup)if int(resultCount) > 0:msg = '百度已收錄' + domain + ',收錄數量:' + str(resultCount)else:msg = '百度未收錄' + domainprint('抓取完畢!!!', msg, '\n')qiWeiWebHook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*'postHeaders = {'Content-Type': 'application/json'}msgData = {"msgtype": "text","text": {"content": msg}}requests.post(qiWeiWebHook, headers=postHeaders, data=json.dumps(msgData))time.sleep(3600) # 每小時跟進一次if __name__ == '__main__':crawlBaiduPickupData()總結
以上是生活随笔為你收集整理的【selenium应用实践】怎样实现自动监测百度收录站点链接数量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【已解决】Vue3+Element-pl
- 下一篇: 「机械」30个有趣的机械动图