Neler Yeni

HTTRACK ile sadece text(yazı) indirmek?

livix

80+
Katılım
3 Şubat 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
0
İsim
Mazlum
arkadaşlar 3 saattir uğraşıyorum web sitesinden kitap bölümlerini yazı halinde indirmeye. 2bin bölümün tamamını indirdim ama html olarak iniyor httrack ile, bana ise ne resim ne başka bir şey lazım sadece bölümler lazım. web sitesinin sahibinden izin aldım bu yüzden sıkıntı yok hatta direkt kendisinden istedim tüm bölümleri atmasını da elinde yoktu maalesef. şimdi bu siteden httrack ile nasıl sadece text yazıları alabilirm? ya da html dosyalarını nasıl toplu şekilde txt dosyasına çeviririm? lütfen yardımcı olun. bölümleri düzenleyip bozuk kelimeleri ayarlayacağım, bölümleri kendim de okuduğum için uğraştırsa bile halledeceğim. çok site gezdim kimisi pythton diyor ama python bilmiyorum pcye kurdum ama onu ayarlayacak bilgim yok.
Mesaj otomatik birleştirildi:

web crawler var githubat ama python bilgisi lazım
 

livix

80+
Katılım
3 Şubat 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
0
İsim
Mazlum
  • Konu Sahibi Konu Sahibi
  • #2
çok yardımcı oldunuz teşekkürler arkadaşlar aosdfsd. neyse kendim hallettim. nasıl hallettiğimi de yazıyorum buraya. chatgp sağolsun.

httracktan böölümleri indirdiniz ama sadece klasörler bölüm1, bölüm2 vs diey devam ediyor ama index yani html dosyaları hep aynı isimse bu kodu kullanın. PYTHON kullanarak yyaptım araştırın iyice ben sadece temeli yazdım size. chatgptden destek alın.

import os

# Kök dizini belirle (indirilen kitapların bulunduğu ana klasör)
root_directory = "-----------------------" # tireli alana kendi klasör yolunuzu yazın

# Klasörleri taramak için os.walk kullan
for root, dirs, files in os.walk(root_directory):
for dir_name in dirs:
# Klasörün tam yolunu oluştur
folder_path = os.path.join(root, dir_name)

# Klasördeki index.html dosyasının yolunu belirle
index_file_path = os.path.join(folder_path, "index.html")

# Eğer index.html dosyası varsa
if os.path.exists(index_file_path):
# Yeni dosya adını oluştur (klasör ismi + .html)
new_file_name = f"{dir_name}.html"
new_file_path = os.path.join(folder_path, new_file_name)

# Dosyayı yeniden adlandır
os.rename(index_file_path, new_file_path)
print(f"{index_file_path} -> {new_file_path} olarak yeniden adlandırıldı.")

bu kodla index dosyalarınız artık index değil bölüm 1, bölüm 2 bölüm 3 vs diye devam edecek.

sonra tüm bölümleri birleştirip epub yapmak için bu kodu kullanacaksınız


import os
from ebooklib import epub
from bs4 import BeautifulSoup
import re

# HTML dosyalarının bulunduğu klasörün yolunu buraya yaz
html_folder = "html dosyalarının yolunu buraa girin" # Kendi yolunu gir
output_epub = "xxxxxxxx.epub" # Çıktı dosyasının adı

# Yeni EPUB kitabı oluştur
book = epub.EpubBook()
book.set_title("HTML to EPUB")
book.set_language("tr")
book.add_author("Mazlum Çoksu") # Buraya ismini yazabilirsin

# HTML dosyalarını sırayla al ve EPUB içine ekle
chapters = []

for i, filename in enumerate(sorted(os.listdir(html_folder))):
if filename.endswith(".html"):
file_path = os.path.join(html_folder, filename)

with open(file_path, "r", encoding="utf-8") as f:
soup = BeautifulSoup(f, "html.parser")
text_content = soup.get_text() # HTML içindeki sadece metni al

# İstenmeyen cümleyi veya kelimeleri temizle
text_content = text_content.replace(""------------- "") # bu alana istemediğiniz kelimeleri giriyorsunuz

# Düzenli ifade ile temizleme (örneğin, "Bölüm başı metin" cümlesi gibi)
pattern = re.compile(r"Bölüm başı metin.*?") # "Bölüm başı metin" ve sonrasını bulur
text_content = re.sub(pattern, "", text_content)

# Paragrafları düzenle
paragraphs = text_content.split("\n") # Satırları ayır
formatted_text = "".join(f"<p>{p.strip()}</p>" for p in paragraphs if p.strip())

chapter = epub.EpubHtml(title=f"Bölüm {i+1}", file_name=f"chapter_{i+1}.xhtml", lang="tr")
chapter.content = f"<h1>Bölüm {i+1}</h1>{formatted_text}"

book.add_item(chapter)
chapters.append(chapter)

# Kitaba içindekiler ve bölümleri ekleyelim
book.toc = chapters
book.spine = ['nav'] + chapters
book.add_item(epub.EpubNcx())
book.add_item(epub.EpubNav())

# EPUB dosyasını kaydet
epub.write_epub(output_epub, book, {})

print("EPUB dosyası başarıyla oluşturuldu:", output_epub)




tabi en güzel sonucu almak için chatgpt ile ortaklaşa çalışın benim yazamadığım detayları verir size illaki bir kaç şey eksik de yazmışımdır.
 

DogancanYr

80+ Silver
Katılım
25 Temmuz 2023
Mesajlar
2,170
Yazma yerinin üstünde üst üste üç noktaya basıp kod satırı özelliğini kullanırsanız daha iyi olur.
 
Top Bottom