Notas de Estudo (répteis): rastejando website poesia para cada um poema, e salva em

1, o local alvo

site de destino: https://so.gushiwen.org/shiwen/default.aspx?

 

 

 

 

2, a finalidade répteis

Texto site de destino rastreamento, tais como o conteúdo do poema, o autor, dinastias, e salvo no local.

 

 3, rastreadores

# - * - Codificação:. UTF-8 - * - 
# rastejando antigo local 
Import Pedidos
 Import Re 

# download de dados 
DEF que write_data (Data): 
    com Open ( ' .txt poesia ' , ' A ' ) AS F: 
        f.write ( Data) 

para I em Range (1,10 ):
     # endereço de destino url 
    url =   " https://so.gushiwen.org/shiwen/default.aspx?page= {} " .format (I) 
    cabeçalhos = { ' do Usuário -agent ' : 'Mozilla / 5.0 (X11; x86_64 Linux) AppleWebKit / 537,11 (KHTML, como Gecko) Chrome / 23.0.1271.64 Safari / 537,11 ' ' Aceitar ' : ' text / html, application / xhtml + xml, application / xml; q = 0,9 , * / *; q = 0,8 ' ' Aceite-Codificação ' : ' ISO-8859-1, utf-8; q = 0,7, *; q = 0,3 ' ' Accept-Encoding ' : ' nenhum ' ' Aceite -Language ' : ' en-US, en; q = 0,8 ' 'Conexão' : ' Keep-alive ' } 
    html = requests.get (url, headers = cabeçalhos) .content.decode ( ' utf-8 ' )
     # impressão (HTML) 
    p_title = ' <p> <a style = "font-size : 18 px; linha-altura: 22px; altura: 22px;" href = "*?" target = "_ blank"> <b> (. *?) </ b> </a> </ p> ' 
    título = re.findall (p_title, html)
     # 提取内容 
    p_context = ' <div class = "contson" id = "*?"> (. *?) </ div> ' 
    contexto = re.findall (p_context,
    <p class = "fonte"> <a href=".*?"> (. *?) </a> ' 
    anos = re.findall (p_years, html, re.S)
     # 提取作者 
    p_author = ' <p .? class = "fonte"> <a href=".*?"> * </a> <span> </ span> <*> </a>.? (*.?) ' 
    autor = re. findall (p_author, html)
     # impressão (contexto) 
    # impressão (título) 
    # impressão (anos) 
    # impressão (autor) 
    para j no intervalo (len (título)): 
        contexto [j] = re.sub ( ' . <* ?> ' '' , Contexto [j])
         #'Gbk' codec pode não carácter codificam '\ u4729', não haverá nenhum erro na linha de 
        contexto [J] = re.sub (r ' \ u4729 ' , '' , contexto [J])
         # impressão (título [J] ) 
        # impressão (anos [J]) 
        # impressão (autor [J]) 
        # impressão (contexto [J]) 
        # gravar dados 
        que write_data (título [J]) 
        que write_data ( ' \ n- ' + anos [J]) 
        que write_data ( ' : ' + autor [J]) 
        que write_data (contexto [J]) 
    Imprimir ( ' download bem-sucedido em {p} ' .formato (str (i)))

4, dificuldade com o pensamento

A dificuldade está em répteis, usar expressões regulares, como o uso de uma expressão regular que corresponda ao corpo de poesia, autor poesia, poema título. O uso regular de expressões regulares, você precisa encontrar o que você precisa para coincidir com o pré-termo e pós-termo, a fim de localizar as necessidades de conteúdo precisos para corresponder. O texto antigo de harmonização:

 # 提取内容 
    p_context = ' <div class = "contson" id = "*?"> (. *?) </ Div> ' 
    contexto = re.findall (p_context, html, re.S)

As necessidades de conteúdo para coincidir com o conteúdo de suportes, antes do termo é <div class = "contson" id = "*?">, Após o artigo é </ div>. Advertências aqui estão duas coisas, primeiro: Id = Aqui você deve usar o modo não-ganancioso, que add "*.?"? , Se não for? Ele continuará a corresponder a próxima conteúdo, o que torna impossível para corresponder o que precisávamos; segunda: Plus (*.?)? Há também o uso de modo não-ganancioso, apenas a primeira correspondência entre parênteses. E que corresponda ao título, nome do autor do autor, o método é semelhante, aqui não é introduzido um por um.

 

Acho que você gosta

Origin www.cnblogs.com/maxxu11/p/12669005.html
Recomendado
Clasificación