亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel

 更新時間:2021年01月04日 14:51:11   作者:拯救自己的小毛猴  
這篇文章主要給大家介紹了關(guān)于python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

佬們輕噴,里面有些代碼都是現(xiàn)學現(xiàn)寫的,一些細節(jié)沒處理好的地方還請指出來~~~

首先貼上效果圖:有些部分我沒有放進來,比如瀏覽器的啟動,但我詳細聰明的你們那個玩意肯定一學就會。有些東西我沒放進來

下載

使用到的庫和總體思路

這部分用到time,selenium,urllib,re,requests,os這幾個庫。

代碼

#!/usr/bin/python3
# coding=utf-8
import time
from selenium import webdriver
from urllib.parse import quote,unquote
import re
import requests
import os
# 下面兩個參數(shù)是防止反爬的,別的文章也是這么寫的,但我這里沒用到
headers = {
 'Accept': '*/*',
 'Accept-Language': 'en-US,en;q=0.5',
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}
params = {
 'from': 'search',
 'seid': '9698329271136034665'
}


class Download_file():
 def __init__(self,url,order_number,file_path):
 self.url=url
 self.order_number=order_number
 self.file_path=file_path

 # 拿到文件對應的下載鏈接
 def _get_files_url(self):
 # 用谷歌瀏覽器打開
 driver=webdriver.Chrome()
 # 拿到url
 driver.get(self.url)
 print(driver.title)
 time.sleep(5)
 # 通過標簽id拿到對應操作對象
 driver.switch_to.frame(0)
 driver.find_element_by_id('search_id').send_keys(self.order_number)
 # 具體頁面有具體的操作,這里我需要找的button沒有id,他是用ng-click="queryCheckRecordByTid(queryInfo.queryTid)"
 driver.find_element_by_class_name('btn').click()
 # driver.find_element_by_id('su').click()
 time.sleep(3)
 # AngularJS語法寫的標簽很煩。。。我這里先找到目標標簽的父標簽
 # 然后通過父標簽拿到目標標簽
 dd=driver.find_elements_by_class_name('col-xs-2')
 # 我這個父標簽下有兩個<a></a>標簽,只能要第一個
 url_list=[]
 for i in dd:
 # 因為下載的url正好是第一個,然后這里取得是element,所以正好取到正確的url
 a=i.find_element_by_xpath('.//a')
 # print(a.get_attribute('href'))
 url_list.append(a.get_attribute('href'))
 # download_btn[0].click()
 time.sleep(3)
 driver.close()
 return url_list

 # 下載文件
 def download_save(self):
 # 匹配出來的可能有None,所以要做一下處理
 url_list=self._get_files_url()
 url_list=list(filter(lambda x:x!=None,url_list))
 if len(url_list)==0:
 return False
 # 創(chuàng)建一個保存zip的文件夾
 # 更改執(zhí)行路徑的原因是這樣可以靈活的在用戶指定的目錄下創(chuàng)建文件
 os.chdir(self.file_path)
 if os.path.exists(self.file_path+'/'+'Download_Files') == False:
 os.mkdir('Download_Files')
 # 更改執(zhí)行路徑
 os.chdir(self.file_path + '/'+'Download_Files/')
 for url in url_list:
 # 鏈接中附帶了作者和文件名,但是需要解碼,所以先用正則語言提取目標串,然后轉(zhuǎn)換成中文
 ret = re.search(r'_.*\.zip$',url)
 file_info=unquote(ret.group())
 file_author=file_info.split('_')[1]
 file_title=file_info.split('_')[2]
 file_object=requests.get(url)
 file_name=file_author+'_'+file_title
 print('正在下載:%s'%file_name)
 with open(file_name,'wb') as f:
 f.write(file_object.content)


 # def auto_fill(self):

if __name__ == '__main__':
 url='http://***'
 order_id='***'
 file_path='D:/For discipline/Get_excel'
 test=Download_file(url,order_id,file_path)
 test.download_save()

解釋

用selenium庫訪問目標頁面,我這里通過_get_files_url方法定位輸入框和超鏈接地址,然后返回超鏈接地址。之后在download_save方法內(nèi)通過request.get拿到文件,然后存在本地,里面的一些存放目錄、文件名處理等細節(jié)看代碼就可以了。
注意,這只是一個案例,不具備普適性,因為每個頁面的前端編寫方法不盡相同,具體頁面需要具體分析,我這里不貼我的網(wǎng)站是涉及到女朋友的業(yè)務,所以不適合貼。

提取內(nèi)容并填寫

使用到的庫

這部分用到time,xlwt,urllib,re,pickle,os,zipfile,BeautifulSoup這幾個庫。

代碼

#!/usr/bin/python3
# coding=utf-8
import os
import time
import xlwt
import zipfile
import re
import pickle
from bs4 import BeautifulSoup
from Download_files import Download_file
class get_excel():
 def __init__(self,file_path):
 self.file_path=file_path


 # 解壓出目標文件
 def _unzip_files(self):
 '''
 這個函數(shù)具備解壓目標文件的功能并且返回需要處理的文件列表
 :return:
 '''
 files_list=os.listdir(self.file_path)
 # 文件名存放在列表中,為了防止處理了別的文件,先用正則匹配一下
 files_list=list(filter(lambda x:re.search(r'\.zip$',x)!=None,files_list))
 title_list=[]
 for file in files_list:
 title=file.split('.')[0].split('_')[1]
 with zipfile.ZipFile(self.file_path+'/'+file,'r') as z:
 # 代碼有點長,主要是用于篩選出目標文件
 target_file=list(filter(lambda x:re.search(r'比對報告.html$',x)!=None,z.namelist()))
 # 下面的方法就是比較靈活的
 contentb=z.read(target_file[0])
 # 這里很頭痛的一點是返回值是二進制的,就算decode了也沒辦法正則匹配
 # 所以我想把它存一下再用utf8格式讀取
 # 當然我也嘗試了decode,但網(wǎng)頁內(nèi)的有些東西還是沒辦法轉(zhuǎn)換,也會導致正則無法匹配
 if os.path.exists(self.file_path+'/'+title+'_'+'比對報告.html')==False:
 with open(self.file_path+'/'+title+'_'+'比對報告.html','wb') as fb:
 pickle.dump(contentb,fb)
 # with open(self.file_path+'/'+target_file[0],'r',encoding='utf-8') as fa:
 # contenta=fa.read()
 # print(contenta)
 # sentence=str(re.search(r'<b [^"]*red tahoma.*</b>$',contenta))
 # value=re.search(r'\d.*%', sentence)
 # info=[author,title,value]
 # repetition_rate.append(info)
 title_list.append(target_file[0])
 return files_list,title_list


 # 讀取html文件內(nèi)容
 def read_html(self):
 '''
 之前的函數(shù)已經(jīng)把目標文件解壓出來了,但html文件的讀取比較麻煩,
 所以這里用到了BeautifulSoup庫來讀取我想要的信息,
 然后把想要的東西存在列表里面返回回來。
 :return:
 '''
 files_list,title_list=self._unzip_files()
 repetition_rate=[]
 for file in files_list:
 # 取出作者和標題,這兩個數(shù)據(jù)要寫到excel里面
 file=file.split('.')
 file=file[0].split('_')
 author=file[0]
 title=file[1]
 # 比對報告已經(jīng)解壓出來了,直接讀取就可以
 with open(self.file_path+'/'+title+'_比對報告.html','rb') as f:
 # 下面是BeautifulSoup的用法,看不懂的話可以去官網(wǎng)
 content=f.read()
 content=BeautifulSoup(content,"html.parser")
 # print(type(content))
 # 網(wǎng)上搜了很多,終于可以找到我想要的重復率了
 value=content.find('b',{"class":"red tahoma"}).string
 repetition_rate.append([author,title,value])
 return repetition_rate


 def write_excel(self):
 '''
 生成xls表格
 :return:
 '''
 workbook=xlwt.Workbook(encoding='utf-8')
 booksheet=workbook.add_sheet('Sheet1')
 # 設置邊框
 borders = xlwt.Borders() # Create Borders
 borders.left = xlwt.Borders.THIN #DASHED虛線,NO_LINE沒有,THIN實線
 borders.right = xlwt.Borders.THIN #borders.right=1 表示實線
 borders.top = xlwt.Borders.THIN
 borders.bottom = xlwt.Borders.THIN
 borders.left_colour=0x40
 borders.right_colour = 0x40
 borders.top_colour = 0x40
 borders.bottom_colour = 0x40
 style1=xlwt.XFStyle()
 style1.borders=borders
 # 設置背景顏色,這些操作搞得很像js和css
 pattern = xlwt.Pattern()
 pattern.pattern = xlwt.Pattern.SOLID_PATTERN
 pattern.pattern_fore_colour = 44
 style = xlwt.XFStyle() # Create the Pattern
 style.pattern = pattern
 repetition_rate=self.read_html()
 # 寫一個標題
 booksheet.write(0,0,'作者',style)
 booksheet.write(0,1,'標題',style)
 booksheet.write(0,2,'重復率',style)
 for item in repetition_rate:
 booksheet.write(repetition_rate.index(item)+1,0,item[0],style1)
 booksheet.write(repetition_rate.index(item)+1,1,item[1],style1)
 booksheet.write(repetition_rate.index(item)+1,2,item[2],style1)
 s='重復率.xls'
 workbook.save(self.file_path+'/'+s)


if __name__ == '__main__':
 # 判斷一下Download_files文件夾
 file_path='D:/For discipline/Get_excel'
 url='http://***'
 order_number='***'
 if os.path.exists('./Download_Files')==False:
 get_file=Download_file(url,order_number,file_path)
 get_file.download_save()
 os.chdir(file_path+'/Download_Files')
 test=get_excel('D:/For discipline/Get_excel/Download_Files')
 test.write_excel()

解釋

由于我下載的zip文件,這就需要先解壓,解壓的庫是zipfile,當然這種解壓只是在執(zhí)行的時候解開,不是實際解壓到目錄下面的。解壓出來的文件比較冗雜,所以我用正則匹配了一個最合適(能夠減少編寫工作量)的文件,這部分代碼中的大部分工作都是為了拿到我的目標值(其中包括字節(jié)流和字符串的轉(zhuǎn)換工作,我就是失敗了才會選擇保存html文件并重新讀取信息的多余過程),也就是(作者,標題,repetition rate),信息寫入excel的過程倒不是很復雜。我基本上沒有解釋方法是因為這些百度一下或者看官網(wǎng)就行了,主要還是闡述一下我的編寫思路

附:Python使用beautifulSoup獲取標簽內(nèi)數(shù)據(jù)

from bs4 import BeautifulSoup

for k in soup.find_all('a'):
 print(k)
 print(k['class'])#查a標簽的class屬性
 print(k['id'])#查a標簽的id值
 print(k['href'])#查a標簽的href值
 print(k.string)#查a標簽的string
 #tag.get('calss'),也可以達到這個效果

到此這篇關(guān)于python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel的文章就介紹到這了,更多相關(guān)python自動瀏覽器下載zip并提取內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

參考文章

相關(guān)文章

  • Numpy的np.random隨機模塊詳解

    Numpy的np.random隨機模塊詳解

    這篇文章主要介紹了Numpy的np.random隨機模塊詳解,平時都會使用到隨機模塊,一般是torch.random或者是numpy.random,有或者是直接使用ramdom這個python內(nèi)置的工具包,那么下面就簡單記錄一下numpy.random常用的函數(shù),需要的朋友可以參考下
    2023-08-08
  • Python 抓取數(shù)據(jù)存儲到Redis中的操作

    Python 抓取數(shù)據(jù)存儲到Redis中的操作

    這篇文章主要介紹了Python 抓取數(shù)據(jù)存儲到Redis中的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的全過程

    pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的全過程

    社區(qū)版的pycharm跟專業(yè)版的pycharm應用差別還是不太大,下面這篇文章主要給大家介紹了關(guān)于pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • python中的被動信息搜集

    python中的被動信息搜集

    這篇文章主要介紹了python中的被動信息搜集的相關(guān)資料,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python文件的操作處理詳解

    Python文件的操作處理詳解

    今天這篇文章給大家介紹Python文件的操作處理,文章內(nèi)容介紹的很詳細,有需要的可以參考借鑒,希望能夠給你帶來幫助
    2021-10-10
  • Python創(chuàng)建exe運行器和截圖工具的示例詳解

    Python創(chuàng)建exe運行器和截圖工具的示例詳解

    本文我們將探討如何使用Python和wxPython創(chuàng)建一個強大而實用的桌面應用程序,可以遍歷指定文件夾中的所有EXE文件,感興趣的小伙伴可以了解一下
    2024-10-10
  • python?format格式化和數(shù)字格式化

    python?format格式化和數(shù)字格式化

    這篇文章主要介紹了python?format格式化和數(shù)字格式化,格式化字符串的函數(shù)?str.format(),它增強了字符串格式化的功能,基本語法是通過{}?和?:?來代替以前的?%?,下面內(nèi)容介紹,需要的朋友可以參考一下
    2022-02-02
  • Python執(zhí)行ping操作的簡單方法

    Python執(zhí)行ping操作的簡單方法

    本文主要介紹了Python執(zhí)行ping操作的簡單方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 使用PyTorch訓練一個圖像分類器實例

    使用PyTorch訓練一個圖像分類器實例

    今天小編就為大家分享一篇使用PyTorch訓練一個圖像分類器實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python利用pptx操作PPT實現(xiàn)幻燈片的刪除與替換

    Python利用pptx操作PPT實現(xiàn)幻燈片的刪除與替換

    這篇文章主要為大家詳細介紹了python如何使用pptx庫實現(xiàn)操作PPTx幻燈片文件刪除并替換圖片,文中的示例代碼講解詳細,感興趣的可以嘗試一下
    2023-02-02

最新評論