python 으로 다운로드 소설 추출
1726 단어 파충
import os
import re
from lxml import etree
import requests
from fake_useragent import UserAgent
url = "http://www.17k.com"
headers = {"User-Agent": UserAgent().chrome}
def getHtml(url):
try:
response = requests.get(url, headers=headers)
html = response.content.decode("utf-8")
except:
html = None
return html
def getPUrl(html):
list = []
elements = etree.HTML(html)
links = elements.xpath("//div[@class='Main List']//dd/a/@href") # 章节链接
name = elements.xpath("//div[@class='Main List']//h1/text()")[0] # 小说标题
for link in links:
list.append(url + link)
return list, name
def saveT(list, name):
cd = "E:/" + name + "/" # 将小说保存在此目录 E:/name/
if os.path.exists(cd) == False: # 如果E盘没有name目录就创建name文件夹
os.mkdir(cd)
for i in list: # 遍历章节链接,获取小说内容
response = requests.get(i, headers=headers)
con = response.content.decode("utf-8")
elem = etree.HTML(con)
conText = elem.xpath("//div[@class='p']/text()") # 小说内容
ts = elem.xpath("//h1/text()")[0] # 小说章节标题
ts = re.sub(u"[^\u4e00-\u9fa5\u0030-\u0039]","",ts) # 只保留标题中的中文
for val in conText: # 保存小说内容
with open(cd + ts + ".txt", "a+") as f:
f.write(val+"
")
f.close()
print("%s —— %s 下载完成:%s" % (name, ts, i)) # 输出保存信息,防止出错。
if __name__ == '__main__':
html = getHtml("http://www.17k.com/list/2816298.html")
links, name = getPUrl(html)
saveT(links,name)
실행 캡 처
결과 캡 처
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(1) 분포 식 파충류 Scrapy 는 어떻게 해 야 하나 요 - 설치Scrapy 의 설치 에 대해 인터넷 을 샅 샅 이 뒤 졌 습 니 다. 하나씩 설치 하 는 것 은 솔직히 좀 번 거 롭 습 니 다. 그럼 원 키 로 설치 한 것 이 있 습 니까?답 은 분명히 있 습 니 다. 다음은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.