Python爬取文章,並把HTML格式轉換成PDF格式

2022-01-05 松鼠愛吃餅乾
本篇文章流程(爬蟲基本思路):一. 數據來源分析 (只有當你找到數據來源的時候, 才能通過代碼實現)

確定需求(要爬取的內容是什麼?)
爬取CSDN文章內容 保存pdf

通過開發者工具進行抓包分析 分析數據從哪裡來的?

歡迎加入白嫖Q群:1039649593【電子書、源碼、課件、軟體、資料】都會分享 

UP主解答問題VX:python10010 


二. 代碼實現過程

發送請求 對於文章列表頁面發送請求

獲取數據 獲取網頁原始碼

解析數據 文章的url 以及 文章標題

發送請求 對於文章詳情頁url地址發送請求

獲取數據 獲取網頁原始碼

解析數據 提取文章標題 / 文章內容

保存數據 把文章內容保存成html文件

把html文件轉成pdf文件

多頁爬取

導入模塊

import requests # 數據請求 發送請求 第三方模塊 pip install requests
import parsel # 數據解析模塊 第三方模塊 pip install parsel
import os # 文件操作模塊
import re # 正則表達式模塊
import pdfkit # pip install pdfkit

創建文件夾

filename = 'pdf\\' # 文件名字
filename_1 = 'html\\'
if not os.path.exists(filename): #如果沒有這個文件夾的話
os.mkdir(filename) # 自動創建一下這個文件夾

if not os.path.exists(filename_1): #如果沒有這個文件夾的話
os.mkdir(filename_1) # 自動創建一下這個文件夾

發送請求

for page in range(1, 11):
print(f'=================正在爬取第{page}頁數據內容=================')
url = f'https://blog.csdn.net/qdPython/article/list/{page}'
# python代碼對於伺服器發送請求 >>> 伺服器接收之後(如果沒有偽裝)被識別出來, 是爬蟲程序, >>> 不會給你返回數據
# 客戶端(瀏覽器) 對於 伺服器發送請求 >>> 伺服器接收到請求之後 >>> 瀏覽器返回一個response響應數據
# headers 請求頭 就是把python代碼偽裝成瀏覽器進行請求
# headers參數欄位 是可以在開發者工具裡面進行查詢 複製
# 並不是所有的參數欄位都是需要的
# user-agent: 瀏覽器的基本信息 (相當於披著羊皮的狼, 這樣可以混進羊群裡面)
# cookie: 用戶信息 檢測是否登錄帳號 (某些網站 是需要登錄之後才能看到數據, B站一些數據內容)
# referer: 防盜鏈 請求你的網址 是從哪裡跳轉過來的 (B站視頻內容 / 妹子圖圖片下載 / 唯品會商品數據)
# 根據不同的網站內容 具體情況 具體分析
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
# 請求方式: get請求 post請求 通過開發者工具可以查看url請求方式是什麼樣的
# 搜索 / 登錄 /查詢 這樣是post請求
response = requests.get(url=url, headers=headers)

數據解析

# 需要把獲取到的html字符串數據轉成 selector 解析對象
selector = parsel.Selector(response.text)
# getall 返回的是列表
href = selector.css('.article-list a::attr(href)').getall()

如果把列表裡面每一個元素 都提取出來

for index in href:
# 發送請求 對於文章詳情頁url地址發送請求
response_1 = requests.get(url=index, headers=headers)
selector_1 = parsel.Selector(response_1.text)
title = selector_1.css('#articleContentId::text').get()
new_title = change_title(title)
content_views = selector_1.css('#content_views').get()
html_content = html_str.format(article=content_views)
html_path = filename_1 + new_title + '.html'
pdf_path = filename + new_title + '.pdf'
with open(html_path, mode='w', encoding='utf-8') as f:
f.write(html_content)
print('正在保存: ', title)

替換特殊字符

def change_title(name):
mode = re.compile(r'[\\\/\:\*\?\"\<\>\|]')
new_name = re.sub(mode, '_', name)
return new_name

運行代碼,即可下載HTML文件

轉換成PDF文件

config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
pdfkit.from_file(html_path, pdf_path, configuration=config)

相關焦點

  • 搞定,爬取公眾號文章轉換成PDF,自動郵件發送給自己!
    今天給大家分享如何每天定時爬取公眾號文章連結和標題,並將內容轉換成PDF,以附件的形式通過郵件發送給自己的小技巧(腳本)。一、寫在前面 這也是一個讀者的需求,之前也有讀者提到過,趁五一還在假期中(調休幾天),給大家一併解決了,拿到需求,先簡單分析下,然後百度下,基本解決方法就有了,哈哈哈哈!
  • python提取pdf文檔中的表格數據、svg格式轉換為pdf
    提取pdf文件中的表格數據原文連結https://www.analyticsvidhya.com/blog/2020/08/how-to-extract-tabular-data-from-pdf-document-using-camelot-in-python/另外還參考了這篇文章
  • word格式怎麼轉換成pdf格式
    閱讀本文前,請您先點擊上面的藍色字體,再點擊「關注」,這樣您就可以繼續免費收到文章了。每天都有分享,完全是免費訂閱,請放心關注。
  • pdf是什麼,如何把pdf格式轉換成cad,快速轉換文件格式的方法
    pdf是什麼,如何把pdf格式轉換成cad?這兩個問題是前幾天小夥伴私信我提出的問題。其實這是很多小夥伴都會遇到的問題,那我們該如何去理解並解決呢?pdf是什麼首先回答小夥伴問的pdf是什麼?這是一種可移植文檔的電子格式,設計pdf文件格式的目的是為了支持跨平臺,讓其不管是在Windows、unix還是mac os等作業系統中都是通用的,可以在很大程度上避免文件在傳輸過程中出現亂碼或不兼容等情況的出現。因此很多個人或企業在傳輸文件時都會選擇把原有的文件轉換成pdf格式然後再傳送,但由於pdf格式的封裝特點使得轉換後的pdf文件不能隨意修改。
  • pdf保存為網頁可以嗎?pdf格式文件要怎麼轉換成網頁文件?
    pdf格式文件要怎麼轉換成網頁文件?說到html,很多小夥伴似懂非懂。其實,這是一種超文本標記語言,頁面內包含有圖片、音樂、連結等很多非文本元素。有時候,特別是網際網路程式設計師,工作中要將其他格式文件(例如pdf)轉html格式網頁。
  • word文檔轉換成pdf怎麼實現?word格式怎麼變成pdf格式?
    別以為word就只能是word,Excel就只能是Excel,PDF就只能是PDF,實際上,文檔格式是可以互相變化的,我們可以將word轉換成Excel,可以將Excel轉換成PDF,當然,也可以將word轉換成PDF。
  • 爬取《The Hitchhiker's Guide to Python!》python進階書並製成pdf
    前幾篇文章我們學習了requests庫和正則,還有個urllib庫,我上篇文章也用了requests庫來教大家去爬那些返回json格式的網頁,挺好玩的
  • 掃描圖片怎麼轉換成pdf格式?有操作簡單的轉換教程嗎?
    掃描的圖片如何轉為pdf格式?上周我掃描了十多張圖片,想把它們弄成一個連續的pdf文檔,該怎麼弄?有同事建議說,可以從網上找來一些轉換工具,選擇圖片轉pdf功能就可操作了。可我找來找去都不知道什麼工具可以用,找到了幾款,又覺得轉換過程有點麻煩。
  • 數據分析:基於Python的自定義文件格式轉換系統
    恭喜你思路完全正確,可是爬取過程中遇到一些網頁是pdf格式的情況,你不能直接抓取頁面了。你此刻如何去採集信息呢?現有工具的轉換效果如何針對以上典型的情況,自定義插件PDFMiner、win2com等將派上用場(本文主要講述文件格式轉化,網絡爬蟲解析讀者自行研究)。
  • PDF格式轉換及無損壓縮
    快印店經常需要將PDF文件壓縮變小,或遇到不同文件格式的轉換,今天小編給大家講述在線快速壓縮PDF無損的方法以及文件格式的快速轉換。工具:谷歌瀏覽器推薦用谷歌瀏覽器打開Smallpdf(https://smallpdf.com),因為谷歌有自帶把這個網站的英文翻譯成中文的功能註:
  • CAJ格式怎麼轉換成pdf
    對於文件轉換是我們最經常能夠遇到的,像工作中常見的caj格式,那麼CAJ格式怎麼轉換成pdf?想知道話就趕緊來看看吧。藉助軟體:迅捷PDF在線轉換器進入方法:可在百度瀏覽器中直接搜索關鍵詞「迅捷pdf在線轉換器」軟體介紹:對於CAJ轉PDF的轉換,迅捷PDF在線轉換器就是很好的選擇,在線操作,方法簡便。
  • 圖片轉換pdf怎麼操作?哪些圖片格式可以轉換成pdf?
    此前小穎就曾經告訴過朋友,說是圖片格式的文件其實也是可以轉換格式的,例如圖片是可以轉換成PDF的,這不,今天朋友就過來問小穎說,說是不知道哪些圖片格式是可以轉換成PDF文件的。剛好,小穎今天也是有空,就詳細的為大家來介紹一下吧!你知道哪些圖片格式可以轉換成pdf?
  • Python 爬蟲:把廖雪峰的教程轉換成 PDF 電子書
    開始寫爬蟲前,我們先來分析一下該網站1的頁面結構,網頁的左側是教程的目錄大綱,每個 URL 對應到右邊的一篇文章,右側上方是文章的標題,中間是文章的正文部分,正文內容是我們關心的重點,我們要爬的數據就是所有網頁的正文部分,下方是用戶的評論區,評論區對我們沒什麼用,所以可以忽略它。工具準備弄清楚了網站的基本結構後就可以開始準備爬蟲所依賴的工具包了。
  • 怎樣將pdf文件轉換成word文檔?pdf格式能變成word格式嗎?
    很多人在剛接觸pdf文件的時候,應該都有這樣的想法吧,若是pdf文件可以是word文檔就好了,這樣我們就可以直接用office辦公軟體打開它,編輯它了。以前這樣的想法或許是空想,但是現在,我們還真有辦法可以實現它!今天小峰要做的,便是教你如何將它變成現實。
  • 9個免費轉換文檔格式的網站,輕鬆搞定PDF!
    沒有選擇取關。今天老悟要跟大家分享的是可以轉換一些文檔格式的網站,這個對很多人來說應該是剛需。wps軟體本身就可以將word文檔另存為pdf等其他一些格式,但是pdf卻只能另存為pdf,如果要在這些格式之間自由轉換,就很麻煩,有些格式可能還無法轉換。這個時候文檔格式轉換網站的優勢就出來了,比很多軟體都要便捷!
  • 利用Python實現某個博主的全部博文下載,並保存成pdf格式呢
    1.導入需要的庫2.分析某個博客的主頁3.提取需要的數據4.遍歷博主的每個文章的網址5.構造html網頁6.創建文件夾7.保存html文件8.將html文件轉換成pdf文件很多人學習python,不知道從何學起。
  • pdf怎麼轉換成圖片格式?大神都是這麼做的!
    閱讀本文前,請您先點擊上面的藍色字體,再點擊「關注」,這樣您就可以繼續免費收到文章了。每天都有分享,免費訂閱,請放心關注。
  • pdf怎麼轉換成word?嗨格式PDF在線工具超簡單!
    pdf怎麼轉換成word?嗨格式PDF在線工具超簡單! pdf怎麼轉換成word?
  • 怎麼將圖片格式轉換為pdf?圖片文件要怎麼變成pdf格式?
    pdf格式的文件,不能被修改,不能被編輯,乍一看,就像是一張一張的圖片組合起來的文件。其實,pdf文件不僅看起來和圖片很像,兩者之間還真的有那麼一點淵源,比如說,一個pdf格式的文件是可以被轉換成圖片格式的。那麼怎麼將圖片格式轉換為pdf?圖片文件要怎麼變成pdf格式?
  • 如何將PDF文檔轉換成JPG格式
    pdf和jpg格式的文件互轉在日常工作中經常遇到,本篇介紹最簡單的方法,告訴你如何將pdf轉換成jpg工具/原料pdf