Los artículos de CSDN rastrean los diez mejores artículos de blogger y los convierten a md

Rastreo de CSDN

python + selenium + parsel + tomd

Tansty creado

Dirección de código:
github
gitee


## Uno, conocimientos necesarios *** 1.Conocimientos básicos del módulo analizador ***

(1) Los selectores de CSS
deben crear un objeto
de selección de parsel. De selección de parsel import Selector
html, que puede ser el código fuente de una solicitud de página web, o html,
selector de cadena = Selector (html) en formato xml,
después de crear el objeto Selector comience a usar el CSS
tags = selector.css ('. content') que
usamos habitualmente, se modificará cuando una etiqueta en particular, use .class_attr
aquí, también
.content hace referencia a todas las consultas etiqueta de clase para el contenido de la
consulta El resultado de es un objeto especial y los datos requeridos no se pueden obtener directamente.
Para convertir el resultado de la consulta de la función css () en una cadena o una lista, se necesita una función
• get ()
• getall ()

(2) Extracción de atributos

href_value = selector.css('a::attr(href)').get()   #提取href标签的值
title=page.css(".title-article::text").get()      #提取文本内容

2.
El método de selenio para seleccionar elementos
find_element_by_class_name: ubicar según la clase

find_element_by_css_selector: Según el posicionamiento css

find_element_by_id: ubicar según id

find_element_by_link_text: ubica según el texto del enlace

find_element_by_name: ubicar según el nombre del nodo

find_element_by_partial_link_text: ubica según el texto del enlace, siempre que esté incluido en el texto completo

find_element_by_tag_name: localizar por etiqueta

find_element_by_xpath: Utilice Xpath para localizar

PD: Cambiar elemento a elementos ubicará todos los elementos elegibles y devolverá una Lista

比如 : find_elements_by_class_name

Lo que se devuelve es el objeto web_element

3.tomd
text = tomd.Tomd (contenido) .markdown
convierte el artículo obtenido en forma de rebaja

Dos, pantalla de código

1. Obtenga un artículo

#对一篇文章的爬取
def spider_one_csdn(title_url):    # 目标文章的链接
    html=requests.get(url=title_url,headers=head).text
    page=parsel.Selector(html)
    #创建解释器
    title=page.css(".title-article::text").get()
    title=filter_str(title)
    print(title)
    content=page.css("article").get()
    content=re.sub("<a.*?a>","",content)
    content = re.sub("<br>", "", content)
    #过滤a标签和br标签
    text=tomd.Tomd(content).markdown
    #转换为markdown 文件
    path = os.getcwd()  # 获取当前的目录路径
    file_name = "./passage"
    final_road = path + file_name
    try:
        os.mkdir(final_road)
        print('创建成功!')
    except:
        # print('目录已经存在或异常')
        pass
    with open(final_road+r"./"+title+".md",mode="w",encoding="utf-8") as f:
        f.write("#"+title)
        f.write(text)
    time.sleep(1)

2. Obtenga todos los artículos de blogueros

def get_article_link(user):
    #获取某个博主的所有文章
    page=1
    while True:
        link = "https://blog.csdn.net/{}/article/list/{}".format(user, page)
        print("现在爬取第", page, "页")
        html = requests.get(url=link, headers=head).text
        cel = parsel.Selector(html)
        name_link = cel.css(".article-list h4 a::attr(href) ").getall()
        if not name_link:
            break
            #没有文章就退出
        for name in name_link:
            spider_one_csdn(name)
        page+=1
    time.sleep(1)

3. Obtenga el nombre del bloguero

def nb_bozhu():
    #获取前十博主的csdn名称
    driver=webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.get("https://blog.csdn.net/rank/writing_rank")
    names=driver.find_elements_by_xpath("//div[@class='rank-item-box d-flex align-items-center']//div[@class='name d-flex align-items-center']/h2/a")
    name_list=[]
    for name in names:
        final_name=name.get_attribute("outerHTML")
        final_name=re.sub('<a href="https://blog.csdn.net/',"",final_name)
        final_name=re.sub('">.*</a>','',final_name)
        name_list.append(final_name)
        print(final_name)
    driver.quit()
    time.sleep(1)
    return name_list

Después de la ejecución final, se generará un directorio de pasajes en el directorio donde se encuentra el programa, que contiene todos los artículos.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/tansty_zh/article/details/108363992
Recomendado
Clasificación