【爬蟲】利用Python爬蟲爬取小麥苗itpub部落格的所有文章的連線地址並寫入Excel中(2)

lhrbest發表於2018-12-27


【爬蟲】利用Python爬蟲爬取小麥苗itpub部落格的所有文章的連線地址並寫入Excel中(2)


第一篇( http://blog.itpub.net/26736162/viewspace-2286553/ )是將地址寫入了txt文字檔案中,這篇部落格將爬取到的結果寫入Excel表格中。


爬取到的結果:

【爬蟲】利用Python爬蟲爬取小麥苗itpub部落格的所有文章的連線地址並寫入Excel中(2) 小麥苗itpub部落格連結地址.xlsx


Python爬取的原始碼:

import requests
import re
import xlwt
url = 'http://blog.itpub.net/26736162/list/%d/'
pattern = re.compile(r'<a target=_blank href="(.*?)" class="w750"><p class="title">(.*?)</p></a>')
# pattern=re.compile(r'<a target=_blank href="(.*?)" class="w750"><p class="title">')
# ret=pattern.findall(data)
# print(''.join(ret))
# def write2file(items):
#     with open('./download/lhrbest_itpub_link_title.txt','a',encoding='utf-8') as fp:
#         for item in items:
#             item=item[::-1]
#             s=':'.join(item)
#             # print('----',len(items))
#             fp.write(s+'\n')
#             # fp.write('---------------------------------------------------------------\n')
#     pass
def set_style(name, height,colour_index,horz=xlwt.Alignment.HORZ_LEFT,bold=False):
    style = xlwt.XFStyle()  # 初始化樣式
    font = xlwt.Font()  # 為樣式建立字型
    font.name = name
    font.bold = bold
    font.colour_index = colour_index  # 1白2紅3綠4藍5黃 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan
    font.height = height #0x190是16進位制,換成10進製為400,然後除以20,就得到字型的大小為20
    style.font = font
    # 設定單元格對齊方式
    alignment = xlwt.Alignment()  # 建立alignment
    alignment.horz = horz  # 設定水平對齊為居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER  # 設定垂直對齊為居中,May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    style.alignment = alignment  # 應用alignment到style3上
    # 設定單元格邊框
    borders = xlwt.Borders()  # 建立borders
    borders.left = xlwt.Borders.DASHED  # 設定左邊框的型別為虛線 May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
    borders.right = xlwt.Borders.THIN  # 設定右邊框的型別為細線
    borders.top = xlwt.Borders.THIN  # 設定上邊框的型別為打點的
    borders.bottom = xlwt.Borders.THIN  # 設定底部邊框型別為粗線
    borders.left_colour = 0x10  # 設定左邊框線條顏色
    borders.right_colour = 0x20
    borders.top_colour = 0x30
    borders.bottom_colour = 0x40
    style.borders = borders  # 將borders應用到style1上
    return style
def init_excel():
    f = xlwt.Workbook(encoding='gbk')  # 建立工作薄
    # 建立個人資訊表
    sheet1 = f.add_sheet(u'小麥苗itpub部落格連結地址', cell_overwrite_ok=True)
    sheet1.col(0).width = 256 * 50
    sheet1.col(1).width = 256 * 50
    rowTitle = [u'部落格文章標題', u'連結地址']
    # rowDatas = [[u'張一', u'男', u'18'], [u'李二', u'女', u'20'], [u'黃三', u'男', u'38'], [u'劉四', u'男', u'88']]
    for i in range(0, len(rowTitle)):
        sheet1.write(0, i, rowTitle[i], set_style('Courier New', 220, 2, xlwt.Alignment.HORZ_CENTER, True))  # 後面是設定樣式
    f.save('./download/excel_write_base.xlsx')
    return  f,sheet1
# 寫excel
def write_excel(rowDatas,f,rowIndex):
    f_excel=f[0]
    f_sheet=f[1]
    rowIndex= rowIndex if rowIndex == 0 else rowIndex*20
    for k in range(0, len(rowDatas)):  # 先遍歷外層的集合,即每行資料
            for j in range(0, len(rowDatas[k])):  # 再遍歷內層集合
                if j == 1:
                    # 寫入資料,k+1表示先去掉標題行,另外每一行資料也會變化,j正好表示第一列資料的變化,rowdatas[k][j] 插入資料
                    f_sheet.write(k +rowIndex+ 1, j,
                                 xlwt.Formula('HYPERLINK("%s","%s")' % (rowDatas[k][::-1][j], rowDatas[k][::-1][j])),set_style('Courier New', 180,4))
                else:
                    f_sheet.write(k +rowIndex+ 1, j, rowDatas[k][::-1][j],set_style('Courier New', 180,0))
                f_excel.save('./download/excel_write_base.xlsx')
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'}
def loadHtml(page):
    if page >= 1:
        f=init_excel() #初始化一個Excel工作簿,包括sheet
        for p in range(1, page + 1):
            url_itpub = url % (p)
            print(url_itpub)
            response = requests.get(url=url_itpub, headers=headers)
            response.encoding = 'utf-8'
            content = response.text
            # print(content)
            # Ctrl + Alt + V:提取變數
            items = pattern.findall(content)
            # print(items)
            # write2file(items)
            write_excel(items,f,p-1)
        pass
    else:
        print('請輸入數字!!!')
    pass
if __name__ == '__main__':
    page = int(input('請輸入需要爬取多少頁:'))
    loadHtml(page)




About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● weixin群:可加我weixin,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2018-12-01 06:00 ~ 2018-12-31 24:00 在魔都完成

● 最新修改時間:2018-12-01 06:00 ~ 2018-12-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班 http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2286652/,如需轉載,請註明出處,否則將追究法律責任。

相關文章