Python implementiert das Crawlen von Romanen auf einer bestimmten Website (Crawler).

Dieser Code dient nur zum Lernen und zur Kommunikation! !

Reptil:

Ein Crawler ist ein automatisiertes Programm, mit dem Daten aus dem Internet abgerufen und extrahiert werden. Es simuliert das Verhalten menschlicher Benutzer, das Durchsuchen und Crawlen von Informationen auf Webseiten sowie das Speichern oder Verarbeiten der erforderlichen Daten.

Der unten gezeigte Code dient zum Crawlen von Romanen

Schauen wir uns zunächst das Laufeffektdiagramm an

 Nachdem der Download abgeschlossen ist, kann er direkt in einer Datei zusammengeführt werden. Das ist sehr praktisch. Es handelt sich nicht um eine einzelne Datei, die störend aussieht.

Code wie folgt anzeigen:

Wenn Sie einen bestimmten Roman crawlen müssen, ändern Sie einfach die Nummer des entsprechenden Romans.

import requests
from bs4 import BeautifulSoup
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

ids = "16585"
url = f'http://www.qiuyelou.net/{ids}/'

def get_soup(url):
    # 发送请求获取页面内容,并返回解析后的BeautifulSoup对象
    response = requests.get(url, headers=headers)
    response.encoding = "utf-8"
    soup = BeautifulSoup(response.text, 'html.parser')
    return soup

def download_chapter(chap_url, title):
    # 下载章节内容
    retries = 3
    while retries > 0:
        try:
            chapter_response = requests.get(chap_url, headers=headers)
            chapter_response.encoding = "utf-8"
            chapter_soup = BeautifulSoup(chapter_response.text, 'html.parser')

            # 提取章节标题和内容
            chapter_title = chapter_soup.find('div', class_='title').h1.text
            idclass = chap_url.split("/")[-1].replace(".html", "")
            chapter_content = chapter_soup.find('div', id=f'content{idclass}').text

            # 将章节标题和内容写入文件
            with open(f"缓存/{title}.txt", 'a', encoding='utf-8') as f:
                f.write(chapter_title + '\n\n')
                f.write(chapter_content + '\n\n')
            print('已下载:', chapter_title)
            break
        except requests.exceptions.RequestException:
            print('请求失败,重试...')
            retries -= 1
            time.sleep(1)
    else:
        print('无法下载章节:', chap_url)

soup = get_soup(url)
title = soup.find('div', class_='title').h1.text
print('正在下载小说:', title)

chapter_urls = [f'http://www.qiuyelou.net/{ids}/{chapter["href"]}' for chapter in soup.select('dd a')]
print(chapter_urls)

for chap_url in chapter_urls:
    download_chapter(chap_url, title)

print('小说下载完成!')

Supongo que te gusta

Origin blog.csdn.net/oiadkt/article/details/131655362
Recomendado
Clasificación