最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年08月12日 10:26:49   作者:forxtz  
這篇文章主要介紹了Python selenium如何打包靜態(tài)網(wǎng)頁并下載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

遇到的問題:

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

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

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

解決思路:

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

2、使用pyautogui、pyperclip操作鍵盤、鼠標(biāo)、剪切板進(jìn)行下載文件。

準(zhǔn)備材料:

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

實(shí)現(xiàn):

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

# 讀取文件
filename = r'data/01 爬取微信公眾號歷史文章/urls 二律背反的一燈如豆-out.xlsx'
df = pd.read_excel(filename,dtype=object)
df = df.reindex(columns=['日期', '標(biāo)題', '原創(chuàng)', '地址','完成情況','儲存地址'])
#df = df.head(5)
dfsel = (df['標(biāo)題'] !='隨文') & (df['完成情況'] != 1)
save_folder = r"I:\code\python\data\01 爬取微信公眾號歷史文章\01 二律背反的一燈如豆" + "\\"
# 設(shè)置保存格式為 mhtml,減少要操作文件保存下拉框的情況
options = webdriver.ChromeOptions()
options.add_argument('--save-page-as-mhtml')

# 啟動(dòng)瀏覽器
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、編寫相關(guān)下載頁面函數(shù)

# 在timeout秒內(nèi),返回中心值,間隔時(shí)長time_setp
# 封裝一個(gè)pyautogui限時(shí)查找函數(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

主要自動(dòng)化操作代碼:

def download_mhtml_with_not_check(x,driver,wait):
 name = ''
 try:
  url = str(x['地址'])
  driver.get(url)
  # 獲取瀏覽器標(biāo)題,用于檢測是否是置頂頁
  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"]')))
  
  #進(jìn)入下載
  pyautogui.hotkey('ctrl', 's')
  # 等待一下對話框彈出
  time.sleep(1)
  bt = finde_gui_element(r'data\png\save.png') #查找保存按鍵
  if bt == None:
   return (0,'')
  else:
   # 根據(jù)標(biāo)題組合成具體路徑
   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'data\png\confirmsaveas.png',timeout=0.5)
   if bt != None:
    # 說明出現(xiàn)重復(fù)明明,點(diǎn)擊覆蓋
    pyautogui.hotkey('Tab')
    pyautogui.hotkey('Enter')
    return (1,name)
   bt = finde_gui_element(r'data\png\cancle.png',timeout=0.5)
   if bt != None:
    #還愛,說明出現(xiàn)了一些異常
    pyautogui.hotkey('esc')
    pyautogui.hotkey('esc')
    pyautogui.leftClick(bt)
    return (-1,name)
  # 加多一個(gè)esc防止出現(xiàn)窗口還在
  pyautogui.hotkey('esc')
 except Exception as e:
  print(str(e))
  return (-2,name)
 return (1,name)

最后寫入excel:

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

Option Explicit

Sub 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操作,難免會遇到彈窗的情況,需要增加活動(dòng)窗體置頂,但是一直沒有找到有效的方法。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實(shí)現(xiàn)四人制撲克牌游戲

    python實(shí)現(xiàn)四人制撲克牌游戲

    這篇文章主要介紹了python實(shí)現(xiàn)四人制撲克牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python使用RPC例子

    Python使用RPC例子

    本文主要介紹了Python使用RPC例子,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 如何運(yùn)用python讀寫CSV文件

    如何運(yùn)用python讀寫CSV文件

    本文通過講解使用基礎(chǔ)Python代碼來讀寫和處理CSV文件,點(diǎn)進(jìn)來的小伙伴一起來學(xué)習(xí)吧
    2021-08-08
  • keras實(shí)現(xiàn)多種分類網(wǎng)絡(luò)的方式

    keras實(shí)現(xiàn)多種分類網(wǎng)絡(luò)的方式

    這篇文章主要介紹了keras實(shí)現(xiàn)多種分類網(wǎng)絡(luò)的方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 簡單的連接MySQL與Python的Bottle框架的方法

    簡單的連接MySQL與Python的Bottle框架的方法

    這篇文章主要介紹了簡單的連接MySQL與Python的Bottle框架的方法,主要基于mysql-connector插件,需要的朋友可以參考下
    2015-04-04
  • Pytorch中Softmax和LogSoftmax的使用詳解

    Pytorch中Softmax和LogSoftmax的使用詳解

    這篇文章主要介紹了Pytorch中Softmax和LogSoftmax的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Pytorch使用MNIST數(shù)據(jù)集實(shí)現(xiàn)基礎(chǔ)GAN和DCGAN詳解

    Pytorch使用MNIST數(shù)據(jù)集實(shí)現(xiàn)基礎(chǔ)GAN和DCGAN詳解

    今天小編就為大家分享一篇Pytorch使用MNIST數(shù)據(jù)集實(shí)現(xiàn)基礎(chǔ)GAN和DCGAN詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 利用 Python 實(shí)現(xiàn)多任務(wù)進(jìn)程

    利用 Python 實(shí)現(xiàn)多任務(wù)進(jìn)程

    這篇文章主要介紹如何利用 Python 實(shí)現(xiàn)多任務(wù)進(jìn)程,正在執(zhí)行的程序,由程序、數(shù)據(jù)和進(jìn)程控制塊組成,是正在執(zhí)行的程序,程序的一次執(zhí)行過程,是資源調(diào)度的基本單位。下面就來詳細(xì)介紹改內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • Python多線程批量采集圖片的代碼實(shí)現(xiàn)

    Python多線程批量采集圖片的代碼實(shí)現(xiàn)

    這篇文章主要給大家介紹了Python多線程批量采集圖片的代碼實(shí)現(xiàn),文中通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-05-05
  • python中的隨機(jī)函數(shù)小結(jié)

    python中的隨機(jī)函數(shù)小結(jié)

    這篇文章主要介紹了python中的隨機(jī)函數(shù)小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論

抚顺县| 陆良县| 中超| 顺义区| 山阳县| 上林县| 泰宁县| 白河县| 交口县| 信宜市| 杭锦旗| 石柱| 渭源县| 桐梓县| 余姚市| 连平县| 金门县| 略阳县| 湖南省| 登封市| 衡山县| 吐鲁番市| 绥德县| 来宾市| 湖北省| 灵璧县| 扎赉特旗| 满城县| 扶风县| 华容县| 菏泽市| 东至县| 中卫市| 简阳市| 光山县| 宁都县| 包头市| 潮安县| 灌云县| 旬邑县| 武宣县|