色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Python selenium如何打包靜態(tài)網(wǎng)頁并下載

瀏覽:2日期:2022-07-14 11:46:11

需求:單純的將page.source寫入文件的方式,會導致一些圖片無法顯示,對于google瀏覽器,直接將頁面打包下載成一個mhtml格式的文件,則可以進行離線下載。對應python selenium 微信公眾號歷史文章隨手一點就返回首頁?郁悶之下只好將他們都下載下來。:https://www.jb51.net/article/193111.htm

遇到的問題:

1、單純使用webdriver.ActionChains無法完成下載動作,未能操作windows窗口。

2、沒有找到相關能直接下載.mhtml的命名接口。

3、pywin32置頂窗口的使用不順利。

解決思路:

1、使用selnium打開瀏覽器,不要操作,讓其保持置頂

2、使用pyautogui、pyperclip操作鍵盤、鼠標、剪切板進行下載文件。

準備材料:

需要將自動化操作的一些圖片截取下來,以作為后期圖片匹配使用。

Python selenium如何打包靜態(tài)網(wǎng)頁并下載

實現(xiàn):

1、打開爬取好的鏈接,遍歷所有需要下載的頁面

# 讀取文件filename = r’data/01 爬取微信公眾號歷史文章/urls 二律背反的一燈如豆-out.xlsx’df = pd.read_excel(filename,dtype=object)df = df.reindex(columns=[’日期’, ’標題’, ’原創(chuàng)’, ’地址’,’完成情況’,’儲存地址’])#df = df.head(5)dfsel = (df[’標題’] !=’隨文’) & (df[’完成情況’] != 1)save_folder = r'I:codepythondata01 爬取微信公眾號歷史文章01 二律背反的一燈如豆' + ''# 設置保存格式為 mhtml,減少要操作文件保存下拉框的情況options = webdriver.ChromeOptions()options.add_argument(’--save-page-as-mhtml’)# 啟動瀏覽器driver = webdriver.Chrome(options=options)wait = WebDriverWait(driver,10)df.loc[dfsel,'完成情況'],df.loc[dfsel,'儲存地址'] = zip(*df[dfsel].apply(download_mhtml_with_not_check, axis=1,args=(driver,wait)))

2、編寫相關下載頁面函數(shù)

# 在timeout秒內(nèi),返回中心值,間隔時長time_setp# 封裝一個pyautogui限時查找函數(shù)#def finde_gui_element(png,timeout = 5,time_setp=0.2): i = 1 if timeout <=0 : timeout = 5 if time_setp <=0 : time_setp = 0.2 while True: if i > timeout/time_setp: return None center = pyautogui.locateCenterOnScreen(png,grayscale=False,confidence=0.9) if center == None: time.sleep(0.2) else: return center i = i + 1

主要自動化操作代碼:

def download_mhtml_with_not_check(x,driver,wait): name = ’’ try: url = str(x[’地址’]) driver.get(url) # 獲取瀏覽器標題,用于檢測是否是置頂頁 wait.until(EC.presence_of_element_located((By.XPATH,’//h2[@id='activity-name']’))) title = driver.find_element_by_xpath(’//h2[@id='activity-name']’).text print(’no:’,x.name,’url:’,url,’title:’,title) wait.until(EC.presence_of_element_located((By.XPATH,’//div[@id='page-content']’))) #進入下載 pyautogui.hotkey(’ctrl’, ’s’) # 等待一下對話框彈出 time.sleep(1) bt = finde_gui_element(r’datapngsave.png’) #查找保存按鍵 if bt == None: return (0,’’) else: # 根據(jù)標題組合成具體路徑 name = save_folder + ’ ’ + title + ’.mhtml’ #print(name) pyperclip.copy(name) pyautogui.hotkey(’ctrl’, ’v’) time.sleep(0.1) pyautogui.hotkey(’Enter’) # 檢查是否彈出另存為 bt = finde_gui_element(r’datapngconfirmsaveas.png’,timeout=0.5) if bt != None: # 說明出現(xiàn)重復明明,點擊覆蓋 pyautogui.hotkey(’Tab’) pyautogui.hotkey(’Enter’) return (1,name) bt = finde_gui_element(r’datapngcancle.png’,timeout=0.5) if bt != None: #還愛,說明出現(xiàn)了一些異常 pyautogui.hotkey(’esc’) pyautogui.hotkey(’esc’) pyautogui.leftClick(bt) return (-1,name) # 加多一個esc防止出現(xiàn)窗口還在 pyautogui.hotkey(’esc’) except Exception as e: print(str(e)) return (-2,name) return (1,name)

最后寫入excel:

Python selenium如何打包靜態(tài)網(wǎng)頁并下載

通過vba代碼,將單元格地址添加上超鏈接:

Option ExplicitSub add_hype() Dim ws As Worksheet, arr As Variant, i As Long Set ws = ThisWorkbook.Worksheets(1) arr = ws.UsedRange.Value ws.Cells.Hyperlinks.Delete For i = 2 To UBound(arr) If CStr(arr(i, 2)) = '隨文' Then Else If CStr(arr(i, 5)) = '1' Then ws.Hyperlinks.Add Anchor:=ws.Cells(i, 6), Address:=CStr(arr(i, 6)) End If End If Next i End Sub

完成。

不足之處:

1、通過autogui操作,難免會遇到彈窗的情況,需要增加活動窗體置頂,但是一直沒有找到有效的方法。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国内一区 | 亚欧精品一区二区三区 | 日本成a人片在线观看网址 日本成年人视频网站 | 日本高清www片| 亚洲三级免费 | 午夜在线观看视频免费 成人 | 波多野结衣在线看片 | 久草手机在线播放 | 亚洲精品一区二区三区第四页 | 成人午夜精品 | 黑色丝袜美美女被躁视频 | 国产美女在线精品亚洲二区 | 国产露脸3p普通话 | 黄毛片一级毛片 | 青久草视频 | 日本亲子乱子伦视频 | 国产精品一二区 | 亚洲日本在线看片 | 日韩亚洲成a人片在线观看 日韩亚洲精品不卡在线 | 欧美牛逼aa| 亚洲国产天堂久久综合图区 | 97在线免费看视频 | 国产美女在线精品亚洲二区 | 欧美亚洲另类视频 | 深夜福利网站在线观看 | 日本韩国一区二区三区 | 久久99国产亚洲精品 | 久久e| 久久亚洲私人国产精品va | 精品99久久| 久草久草视频 | 免费观看一级一片 | 亚洲视频在线网站 | 在线观看一二三区 | 成人一级视频 | 国内精品久久久久影院网站 | 最新精品在线视频 | 成年女人在线观看片免费视频 | 精品三级视频 | 亚洲系列中文字幕一区二区 | 午夜精品视频在线观看美女 |