Buscando un código de rastreador python3 que pueda copiar directamente el texto de la novela desde el sitio web de la novela e integrarlo en un nuevo texto
de?bs4?import?BeautifulSoup
de?requests.exceptions?import?RequestException
importar?re
importar?requests
importar?os
def?get_html_text(url):
intenta:
r?=?requests.get(url)
r.raise_for_status()
retorno?r.text
excepto?RequestException:
retorno?Ninguno
def?get_chapter_names(html):
sopa?=?BeautifulSoup(html,?'lxml')
charpter?=?soup.select('.bg')
nombres_charpter?=?[]
for?entry?in?charpter[1:]:
nombre_charpter?=?re.findall('lt;h2gt ;(.*?)lt;/h2gt;',?str(entry))
nombre_archivo?=?re.findall('lt;a?href.*?gt;(.*?) lt;/agt;',?str(entry))
if?charpter_name?and?file_name:
for?name?in?file_name:
nombre?=?nombre.split('?')[0]
charpter_names.append(charpter_name[0]? ?'_'? ?nombre)
más: p>
pasar
return?set(charpter_names)
def?get_each_url(html):
sopa?=?BeautifulSoup(html,?' lxml')
urls?=?soup.select('ul?li?a')
para?url?in?urls:
enlace? =?url.get('href')
texto?=?url.text.split('?')[0]
nombre_completo?=?url.text.replace ('?', '')
rendimiento?{'url': ?enlace, ?'texto': ?texto, 'nombre_completo': nombre_completo}
imprimir(texto)
def?get_text(url):
r?=?requests.get(url)
r.encoding?=?r.apparent_encoding
sopa?=?BeautifulSoup(r.text,?'lxml')
items?=?soup.select('div.content-body')
item ?
=?re.findall(';(.*?);',?items[0].text,?re.S)
return?item[0].encode()
def?save_to_file(url,?text,?full_name):
base_dir?=?'daomu'
ruta?=?'{}\\{}\\ {}'.format(os.getcwd(),?base_dir,?text)
si?not?os.path.exists(ruta):
prueba:
os.makedirs(ruta)
excepto:
pasar
intentar:
con?open(ruta? ' \\' ?full_name? '.txt', ?'wb')?as?f:
f.write(get_text(url))
excepto:
contraseña
def?main():
url?=?'/'
html?=?get_html_text(url)
¿capítulos?=?get_chapter_names(html)
para?capítulo?en?capítulos:
para?cada?en?get_each_url(html):
if?cada['texto']?==?chapter.split('_')[-1]:
guardar_en_archivo(cada['url'], capítulo, cada['nombre_completo'] )
if?__name__?==?'__main__':
main()