Utilisez Python pour télécharger tous les articles de blog d'un certain blogueur et les enregistrer au format pdf

Répertoire d'articles

Premièrement, analyser l'idée d'écrire du code

Deuxièmement, les étapes du code

1. Importez les bibliothèques requises

2. Analysez la page d'accueil d'un blog

3. Extraire les données requises

4. Parcourez l'URL de l'article de chaque blogueur

Beaucoup de gens apprennent le python et ne savent pas par où commencer.

Beaucoup de gens apprennent python et après avoir maîtrisé la grammaire de base, ils ne savent pas où trouver des cas pour commencer.

De nombreuses personnes qui ont fait des études de cas ne savent pas comment acquérir des connaissances plus avancées.

Donc pour ces trois types de personnes, je vais vous fournir une bonne plateforme d'apprentissage, gratuite pour recevoir des tutoriels vidéo, des e-books et le code source du cours! ?? ¤

Groupe QQ: 701698587

5. Construire une page Web HTML

6. Créez un dossier

7. Enregistrez le fichier html

8. Convertissez le fichier html en fichier pdf

3. Le code total et les résultats

Pour résumer

Premièrement, analyser l'idée d'écrire du code

  1. 1. URL de l'auteur + en-têtes 
  2. 2. Vérifiez si l'URL de l'auteur est une page Web statique 
  3. 3. Analysez la page Web, obtenez l'URL de chaque œuvre de l'auteur et le nom de l'auteur. 
  4. 4. Continuez à visiter en fonction de l'url de chaque œuvre, puis analysez les données 
  5. 5. Extraire la chaîne de texte html, titre 
  6. 6. Créez un dossier 
  7. 7. Enregistrer le texte html 
  8. 8. Convertir le texte PDF

2. Étape de code
1. Importez la bibliothèque requise Le
code est le suivant (exemple):

import requests,parsel,os,pdfkit
from lxml import etree


2. Analyser la page d'accueil d'un certain blog
2.1. Cliquez sur le site Web d'un certain blogueur à tout moment, par exemple: "w veut devenir plus fort" blogueur

2.2 Cliquez sur Developer Tools pour actualiser et charger l'URL de la page d'accueil du blogueur


2.3 Faites un clic droit pour afficher le code source de la page Web et constatez que la page d'accueil du blogueur est une page Web statique. Ici, j'ai choisi xpath pour analyser la page Web. Bien sûr, vous pouvez également utiliser le sélecteur css, beautifulsoup et d'autres analyseurs.

code montrer comme ci-dessous:

    #1.author_url+headers
    author_url=input('请输入csdn博主的url:')
    headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/87.0.4280.88 Safari/537.36'}
    response = requests.get(author_url,headers=headers).text
    # 2.作者所在的url是静态网页,xpath解析每个作品url
    html_xpath = etree.HTML(response)


 

3. Extraire les données requises
3.1 Extraire le nom du blog et l'URL de toutes les œuvres


code montrer comme ci-dessous:

 

   try:
        author_name = html_xpath.xpath(r'//*[@class="user-profile-head-name"]/div/text()')[0]
        # print(author_name)
        author_book_urls = html_xpath.xpath(r'//*[@class="blog-list-box"]/a/@href')
        # pprint(author_book_urls)
    except Exception as e:
        author_name = html_xpath.xpath(r'//*[@id="uid"]/span/text()')[0]
        author_book_urls = html_xpath.xpath(r'//*[@class="article-list"]/div/h4/a/@href')


Le chemin xpath de l'élément peut être copié directement. J'expliquerai un peu la gestion des exceptions utilisée ici: en fait, il y a encore quelques blogueurs dont les pages d'accueil sont différentes, par exemple:

La méthode d'analyse est la même, sauf que le chemin xpath de l'élément est différent, donc quelle que soit sa forme, les URL et le nom du travail peuvent être extraits via la gestion des exceptions. 

4. Traversez l'URL de chaque article du blogueur
4.1 Chaque page Web de travail est également une page Web statique, envoyez une requête, obtenez la réponse et analysez-la

code montrer comme ci-dessous:

    for author_book_url in author_book_urls:
        book_res = requests.get(author_book_url,headers = headers).text
        #4.将响应分别用xpath,css选择器解析
        html_book_xpath = etree.HTML(book_res)
        html_book_css = parsel.Selector(book_res)


4.2 Le sélecteur css extrait le texte html de l'article et xpath extrait le titre de l'article


code montrer comme ci-dessous:

        book_title = html_book_xpath.xpath(r'//*[@id="articleContentId"]/text()')[0]
        html_book_content = html_book_css.css('#mainBox > main > div.blog-content-box').get()

La page HTML de construction


   

    #5.拼接构造网页框架,加入文章html内容
        html =\
            '''
            <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <title>Title</title>
            </head>
            <body>
                {}
            </body>
            </html>

6. Créez un dossier

        #6.创建博主文件夹
        if not os.path.exists(r'./{}'.format(author_name)):
            os.mkdir(r'./{}'.format(author_name))
7.保存html文件
        #6.保存html文本
        try:
            with open(r'./{}/{}.html'.format(author_name,book_title),'w',encoding='utf-8') as f:
                f.write(html)
            print('***{}.html文件下载成功****'.format(book_title))
        except Exception as e:
            continue


8. Convertir le fichier html en fichier pdf État
physique du fichier converti: besoin de télécharger le fichier pilote wkhtmltopdf.exe!

​
        #8.转换pdf文本,导入pdfkit包
        try:
            config = pdfkit.configuration(
                wkhtmltopdf=r'D:\programs\wkhtmltopdf\bin\wkhtmltopdf.exe'
            )
            pdfkit.from_file(
                r'./{}/{}.html'.format(author_name,book_title),
                './{}/{}.pdf'.format(author_name,book_title),
                configuration=config
            )
            print(r'******{}.pdf文件保存成功******'.format(book_title))
        except Exception as e:
            continue


 

 

3. Le code total et les résultats

# !/usr/bin/env python
# -*- coding: utf-8 -*-
 
'''
    实现目标:爬某一博主的所有博客
    1.作者url+headers
    2.看作者所在的url是否是静态网页
    3.解析网页,获取作者的每个作品的url,及作者名字
    4.根据每个作品url继续访问,然后数据分析
    5.提取html文本,标题
    6.创建多级文件夹
    7.保存html文本
    8.转换pdf文本
'''
import requests,parsel,os,pdfkit
from lxml import etree
from pprint import pprint
def main():
    #1.author_url+headers
    author_url=input('请输入csdn博主的url:')
    headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/87.0.4280.88 Safari/537.36'}
    response = requests.get(author_url,headers=headers).text
    # 2.作者所在的url是静态网页,xpath解析每个文章url
    html_xpath = etree.HTML(response)
 
    try:
        author_name = html_xpath.xpath(r'//*[@class="user-profile-head-name"]/div/text()')[0]
        # print(author_name)
        author_book_urls = html_xpath.xpath(r'//*[@class="blog-list-box"]/a/@href')
        # print(author_book_urls)
    except Exception as e:
        author_name = html_xpath.xpath(r'//*[@id="uid"]/span/text()')[0]
        author_book_urls = html_xpath.xpath(r'//*[@class="article-list"]/div/h4/a/@href')
 
    # print(author_name,author_book_urls,sep='\n')
 
    #3.遍历循环每个作品网址,请求网页
    for author_book_url in author_book_urls:
        book_res = requests.get(author_book_url,headers = headers).text
        #4.将响应分别用xpath,css选择器解析
        html_book_xpath = etree.HTML(book_res)
        html_book_css = parsel.Selector(book_res)
        book_title = html_book_xpath.xpath(r'//*[@id="articleContentId"]/text()')[0]
        html_book_content = html_book_css.css('#mainBox > main > div.blog-content-box').get()
 
        #5.拼接构造网页框架,加入文章html内容
        html =\
            '''
            <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <title>Title</title>
            </head>
            <body>
                {}
            </body>
            </html>

 

Je suppose que tu aimes

Origine blog.csdn.net/Python_kele/article/details/115038240
conseillé
Classement