Python實(shí)現(xiàn)爬蟲(chóng)抓取與讀寫(xiě)、追加到excel文件操作示例
本文實(shí)例講述了Python實(shí)現(xiàn)爬蟲(chóng)抓取與讀寫(xiě)、追加到excel文件操作。分享給大家供大家參考,具體如下:
爬取糗事百科熱門
安裝 讀寫(xiě)excel 依賴 pip install xlwt
安裝 追加excel文件內(nèi)容 依賴
pip install xlutils
安裝
lxml
Python示例:
import csv import requests from lxml import etree import time import xlwt import os from xlutils.copy import copy import xlrd data_infos_list = [] headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'} # f = open('C:\\Users\\Administrator\\Desktop\\qiubaibook.csv', 'a+', newline='', encoding='utf-8') # writer = csv.writer(f) # writer.writerow(('author', 'sex', 'rank', 'content', 'great', 'comment', 'time')) filename = 'C:\\Users\\Administrator\\Desktop\\qiubaibook.xls' def get_info(url): res = requests.get(url, headers=headers) selector = etree.HTML(res.text) # print(res.text) htmls = selector.xpath('//div[contains(@class,"article block untagged mb15")]') # // *[ @ id = "qiushi_tag_120024357"] / a[1] / div / span 內(nèi)容 # //*[@id="qiushi_tag_120024357"]/div[2]/span[1]/i 好笑 # //*[@id="c-120024357"]/i 評(píng)論 # //*[@id="qiushi_tag_120024357"]/div[1]/a[2]/h2 作者 # //*[@id="qiushi_tag_120024357"]/div[1]/div 等級(jí) # // womenIcon manIcon 性別 for html in htmls: author = html.xpath('div[1]/a[2]/h2/text()') if len(author) == 0: author = html.xpath('div[1]/span[2]/h2/text()') rank = html.xpath('div[1]/div/text()') sex = html.xpath('div[1]/div/@class') if len(sex) == 0: sex = '未知' elif 'manIcon' in sex[0]: sex = '男' elif 'womenIcon' in sex[0]: sex = '女' if len(rank) == 0: rank = '-1' contents = html.xpath('a[1]/div/span/text()') great = html.xpath('div[2]/span[1]/i/text()') # //*[@id="qiushi_tag_112746244"]/div[3]/span[1]/i if len(great) == 0: great = html.xpath('div[3]/span[1]/i/text()') comment = html.xpath('div[2]/span[2]/a/i/text()') # //*[@id="c-112746244"]/i if len(comment) == 0: comment = html.xpath('div[3]/span[2]/a/i/text()') # classes = html.xpath('a[1]/@class') # writer.writerow((author[0].strip(), sex, rank[0].strip(), contents[0].strip(), great[0].strip(), # comment[0].strip(), time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))) data_infos = [author[0].strip(), sex, rank[0].strip(), contents[0].strip(), great[0].strip(), comment[0].strip(), time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))] data_infos_list.append(data_infos) def write_data(sheet, row): for data_infos in data_infos_list: j = 0 for data in data_infos: sheet.write(row, j, data) j += 1 row += 1 if __name__ == '__main__': urls = ['https://www.qiushibaike.com/8hr/page/{}/'.format(num) for num in range(1, 14)] for url in urls: print(url) get_info(url) time.sleep(2) # 如果文件存在,則追加。如果文件不存在,則新建 if os.path.exists(filename): # 打開(kāi)excel rb = xlrd.open_workbook(filename, formatting_info=True) # formatting_info=True 保留原有字體顏色等樣式 # 用 xlrd 提供的方法獲得現(xiàn)在已有的行數(shù) rn = rb.sheets()[0].nrows # 復(fù)制excel wb = copy(rb) # 從復(fù)制的excel文件中得到第一個(gè)sheet sheet = wb.get_sheet(0) # 向sheet中寫(xiě)入文件 write_data(sheet, rn) # 刪除原先的文件 os.remove(filename) # 保存 wb.save(filename) else: header = ['author', 'sex', 'rank', 'content', 'great', 'comment', 'time'] book = xlwt.Workbook(encoding='utf-8') sheet = book.add_sheet('糗百') # 向 excel 中寫(xiě)入表頭 for h in range(len(header)): sheet.write(0, h, header[h]) # 向sheet中寫(xiě)入內(nèi)容 write_data(sheet, 1) book.save(filename)
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn)
在接口測(cè)試的過(guò)程中,經(jīng)常會(huì)遇到有些接口需要在登錄的狀態(tài)下才能請(qǐng)求,本文主要介紹了python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn),感興趣的可以了解一下2022-06-06用python寫(xiě)的一個(gè)wordpress的采集程序
在學(xué)習(xí)python的過(guò)程中,經(jīng)過(guò)不斷的嘗試及努力,終于完成了第一個(gè)像樣的python程序,雖然還有很多需要優(yōu)化的地方,但是目前基本上實(shí)現(xiàn)了我所要求的功能,需要的朋友可以參考下2016-02-02使用 Python 和 OpenCV 實(shí)現(xiàn)攝像頭人臉檢測(cè)并截圖功能
在現(xiàn)代應(yīng)用中,人臉檢測(cè)是一項(xiàng)非常重要的技術(shù),廣泛應(yīng)用于安全監(jiān)控、身份驗(yàn)證等領(lǐng)域,本文詳細(xì)介紹了如何使用 Python 和 OpenCV 庫(kù)實(shí)現(xiàn)攝像頭人臉檢測(cè)并截圖,并通過(guò)具體的代碼示例展示了整個(gè)過(guò)程,感興趣的朋友一起看看吧2024-11-11Python?的counter()函數(shù)解析與示例詳解
在?Python?中,?collections?模塊提供了?Counter?類,用于計(jì)算可迭代對(duì)象中元素的數(shù)量,?Counter?是一個(gè)字典的子類,它以元素作為鍵,以元素出現(xiàn)的次數(shù)作為值進(jìn)行計(jì)數(shù),本文給大家介紹Python?的counter()函數(shù),感興趣的朋友一起看看吧2023-08-08Python爬蟲(chóng),獲取,解析,存儲(chǔ)詳解
這篇文章主要介紹了Python爬蟲(chóng)獲取、解析,獲數(shù)據(jù)操作,其中代碼描述非常詳細(xì),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助2021-10-10Python數(shù)據(jù)分析處理(三)--運(yùn)動(dòng)員信息的分組與聚合
這篇文章主要介紹了Python數(shù)據(jù)清洗與處理?運(yùn)動(dòng)員信息的分組與聚合,根據(jù)Python數(shù)據(jù)清洗與處理?的相關(guān)資料展開(kāi)運(yùn)動(dòng)員信息的分組與聚合的文章內(nèi)容,需要的朋友可以參考一下2021-12-12python實(shí)現(xiàn)自動(dòng)化報(bào)表功能(Oracle/plsql/Excel/多線程)
這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)化報(bào)表(Oracle/plsql/Excel/多線程)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Python selenium的安裝和下載谷歌瀏覽器鏡像驅(qū)動(dòng)
Selenium是一個(gè)用于web自動(dòng)化測(cè)試的框架,在使用Ajax請(qǐng)求數(shù)據(jù)的頁(yè)面中,會(huì)出現(xiàn) sign ,token等密鑰,借助使用Selenium框架來(lái)實(shí)現(xiàn)數(shù)據(jù)爬取很不錯(cuò),本文給大家介紹Python selenium的安裝和下載谷歌瀏覽器鏡像驅(qū)動(dòng),需要的朋友可以參考下2022-11-11