Utilice bs4-Beautifulsoup para rastrear el contenido de los capítulos de la novela de Romance of the Three Kingdoms

Hoy utilicé Beautifulsoup para rastrear el contenido de la novela Romance of the Three Kingdoms en http://www.shicimingju.com/book/sanguoyanyi.html.

-bs4 principio de análisis de datos: 
   -1. Cree una instancia de BeautifulSoup y cargue los datos de origen de la página en el objeto 
   -2. Realice el posicionamiento de etiquetas y la extracción de datos llamando a los atributos o métodos relacionados en el objeto BeautifulSoup 
-environment installation- 
   pip install bs4 
   -pip instalar lxml (que es un programa de análisis, se pueden utilizar tanto bs4 y XPath) -Cómo 
a una instancia del objeto BeautifulSoup: 
   de importación bs4 BeautifulSoup -Objeto 
   instantiation- 
       1. Cargar los datos en el documento hTML local en el objeto 
                  #will Cargue los datos en el documento html local en este objeto 
                  fp = open ('./ text.html', 'r', encoding = 'utf-8') 
                  soup = BeautifulSoup (fp, 'lxml') 
       -2. El código fuente de la página obtenida en Internet se carga en el objeto 
              page_text = response.text 
              soup = Beatifulsoup (page_text, 'lxml') 
   y atributos proporcionados para el análisis de datos: 
       -soup.tagName:Lo que se devuelve es la etiqueta correspondiente a la primera aparición de tagName (div, a, etc.) en el documento
       -soup.find ():
              -find ('tagName'): Equivalente a soup.tagName -Posicionamiento del atributo 
              : 
                    -soup.find ('div', class_ (subraya la etiqueta si la escribes) = 'song') 
       -soup.find_all ('tagName'): Devuelve todas las etiquetas que cumplen los requisitos (una lista) 
       -select: 
              -soup.select ('Un selector determinado (id, clase, etiqueta ... selector) + etiqueta'), lo que se devuelve es un 
              selector de nivel de lista 
                   -soup.select ('. tang> ul> li> a') [0]:> indica un nivel, selector de nivel 
                   -soup.select ('. tang> ul a'): los espacios indican niveles múltiples, ul y La etiqueta li entre a está representada por un espacio 
       -obtener los datos de texto entre las etiquetas 
              -cuando se ubica la etiqueta, como soup.a.text / string / get_text para obtener los datos de texto correspondientes 
              soup.select ('. Tang> ul a') [0].string 
              -text y get_text pueden obtener todo el contenido de texto en una etiqueta- puede
              -string solo puede obtener los datos de texto directamente debajo de la etiqueta 
       -obtener el valor del atributo en la etiqueta: 
              -soup.a ['herf']

Otro punto importante: ¡el nombre de la etiqueta debe estar escrito correctamente! ! ! ! !

No hay mucho que decir sobre el siguiente código.

import requests
from bs4 import BeautifulSoup
if __name__=='__main__':
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36'
    }
    url = 'http://www.shicimingju.com/book/sanguoyanyi.html'
    page_text = requests.get(url=url,headers=headers).text
    print(page_text)
    #在首页中解析出章节的标题和详情页的url
    #1.实例化对象,需要将页面源码数据加载到该对象中
    soup = BeautifulSoup(page_text,'lxml')
    #解析章节标题和详情页url
    li_list = soup.select('.book-mulu >ul >li')
    fp = open('./sanguo.text','w',encoding='utf-8')
    for li in li_list:
        title = li.a.string
        detail_url = 'http://www.shicimingju.com'+li.a['href']
        #对详情页发起请求,解析出章节内容
        detail_page_text = requests.get(url=detail_url,headers=headers).text
        #解析出详情页相关的章节内容
        detail_soup = BeautifulSoup(detail_page_text,'lxml')
        div_tag = detail_soup.find('div',class_='chapter_content')
        content = div_tag.text
        fp.write(title+':'+content+'\n')
        print(title,'爬取成功!!!')

El resultado está en la imagen de arriba.

 

Supongo que te gusta

Origin blog.csdn.net/qwerty1372431588/article/details/106086361
Recomendado
Clasificación