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.