用Python和BeautifulSoup解析HTML页面时的问题

2024-04-25 10:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力解析一个包含一些Java的网站:使用BeautifulSoup我应该能够提取出我需要的信息,但是尽管我做了很多尝试,我还是不明白如何做。不幸的是,我不能发布链接,因为这是一个受限制的网站,但我可以发布的HTML代码和结果,我得到,希望有人能帮助我。你知道吗

以下是HTML的摘录:

<table class="customer-info-table"> <tr> <td> <label>Nome</label> XXXXXX XXXX </td> <td> <label>Cognome</label> XXXXXXX </td> </tr> <tr> <td> <label>Codice cliente</label> N/A </td> <td> <label>Indirizzo e-mail</label> XXXXXXXXX@gmail.com </td> </tr> </table> <span class="panel-headline">Commento articolo</span> <hr/> <i class="rating r1"></i><br/> BLACKLIST <textarea name="text" id="review-text" rows="12" readonly="readonly"> Mi avete mandato e-mail Ke il prodotto era disponibile; invece è esaurito........... Mah.</textarea> <span class="panel-headline">Commenti sulla vestibilità</span> <hr/> <table class="size-info-table"> <tr> <td> <label>Lunghezza</label> Viel zu kurz </td> <td> <label>Larghezza</label> Viel zu eng </td> <td> <label>Taglia</label> &nbsp </td> <td> <label>Varianti</label> &nbsp </td> <td> <label>Statura</label> &nbsp </td> </tr> </table> <p> <table class="table"> <tr> <td> <b>Rezensions-ID:</b> <span id="review-id">11166707</span> </td> <td> <b>Creata:</b> <span class="utc-date"> 23.03.2018 12:23:15 </span> </td> </tr> <tr> <td> <b>Letzte &Auml;nderung</b> <span class="utc-date"> 23.03.2018 12:23:15 </span> </td> <td> <b>di</b> Kunde </td> </tr> <tr> <td> <b>Data pubblicazione:</b> <span class="utc-date"> </span> </td> </tr> </table> </p> </div> </div> <div class="span4"> <div id="editing-functions-panel" class="label full-height"> <span class="panel-headline">Modifica</span> <hr/> <div> <label>Scegli un destinatario</label> <a id="reset-recipients-list-link" class="btn-link" href="#" onclick="reviews.resetRecipientsList(true); return false;">Cancella la lista destinatari</a> <select name="email-recipients-select" id="email-recipients-select"><option value=""></option> <option value="servizio@bonprix.it">XXXXXX@XXXXXXX.it</option></select> <textarea name="email-recipients-textarea" id="email-recipients-textarea"> </textarea> <a id="send-mail-btn" class="btn" data-confirm-translation-modified-text="Die Übersetzung wurde noch nicht gespeichert. Rezension trotzdem versenden?" href="#" onclick="reviews.sendMail(true); return false;">Invia recensione</a> <label>Traduci</label> <textarea name="text" id="review-uebersetzung"> </textarea> <label>Feedback al cliente</label> <textarea name="text" id="review-feedbackToCustomer"> </textarea> </div> <div> <label>Tipo di recensione</label> <select name="meinungstyp" id="review-meinungstyp"><option selected="selected" value="R">Recensione</option> <option value="G">Risposte</option> <option value="A">Archivio</option></select> </div> <div id="aktiv-checkboxes-container"> <div class="control-group use-bootstrap-groups"> <label class="control-label" for="review_aktiv">Pubblicata</label> <input type="hidden" name="review_aktiv" id="review_aktiv" /> <div class="controls"> <div class="btn-group"> <a class="change-active-state btn " data-value="T" href="#">Sì</a> <a class="change-active-state btn " data-value="F" href="#">No</a> </div> </div> </div> </div> <div class="row-fluid form-actions possible-multi-line"> <a class="btn btn-primary" id="save-review-btn" remote="true" href="#" onclick="reviews.saveReview(true); return false;">Salva recensione</a> <a class="btn btn-danger" id="delete-review-btn" remote="true" data-confirm-dialog-title="Cancella recensioni" href="#" onclick="reviews.deleteSelectedReview(true); return false;"><i class='icon-trash icon-white'></i> Cancella recensioni</a> </div> </div> </div> </div> </div> </div> </div> <div id="search-reviews-tab"> <div class="mini-statistics"> <p> Da controllare: 88 / Pubblicata: 301941 / Non pubblicata: 9198 / Prenotate: [0], mie: [0] </p> </div>

我尝试运行以下代码(变量页包含对窗体发出的post请求的结果):

 page = response3.text
 soup2 = BeautifulSoup(page, 'html.parser')    
for table in soup2.find_all(["table", {"class": "customer-info-table"}]):
    string = table.get_text().replace("\\n", "").replace("\/th", "").replace("\/span", "").replace("\/i", "").replace("\/p", "").replace("\/a", "").replace("\/tr", "").replace("\/div", "").replace("\/td", "").replace("<\/tbody", "").replace("\/table", "").replace("\/textarea", "").replace("\/b","").replace("<\/label", "").replace("ead", "").replace("<>", "")
print string

这就是我打印字符串时得到的结果:

                                            1                Rezensionen 
gefunden                                                                                                  
5                                      Volevo sapere se rientrano perchè 
vedo che la taglia 48/50 è terminata ...                                                  
>                                            Informazioni articoloN. 
art.>97655395Masterstyle-ID>33426811Digistyle-ID>19163347Ø Media dei 
voti>4.13 Lunghezza>GiustoLarghezza>GiustoDisponibilità>Esaurito(0)                                        
Dati cliente            Nome>      XXXXXX              Cognome>      
XXXXXX                  Codice cliente>      N/A              Indirizzo 
e-mail>      XXXXXXXXXXXX@gmail.com      Commento articolo  
BLACKLISTVolevo sapere se rientrano perchè vedo che la taglia 48/50 è 
terminata ...Commenti sulla vestibilità            Lunghezza>      Viel 
zu kurz              Larghezza>      Viel zu eng              Taglia>                         Varianti>                     Statura>                                 
    Rezensions-ID:        9430069                    Creata:                  
    01.01.2017 12:37:16                                    Letzte 
    Änderung 05.01.2017 07:52:42                            di        
YYYYYYYY                            
Data pubblicazione:                                                                              
Modifica  Scegli un destinatario>  Cancella la lista destinatari  
<\/option>XXXXXXX@XXXXXXX.it<\/option><\/select>    Invia recensione  
Traduci>    Feedback al cliente>    Tipo di recensione>  
Recensione<\/option>Risposte<\/option>Archivio<\/option><\/select>      
Pubblicata>                      Sì        No              Salva 
recensione   Cancella recensioni                    
').trigger('repaint');
reviews.initEditReviewTab();
$('#reviews-tab-navigation').tabs('option', 'active', 0);
$('.search-tab-buttons').html('              Cerca      Ricerca standard      
Statistiche      ');
$('.mini-statistics').replaceWith('            Da controllare: 90 / 
Pubblicata: 301968 / Non pubblicata: 9198 / Prenotate: [0], mie: [0]      
');

        Nome>      XXXXXXX              Cognome>      XXXXXXX                  
Codice cliente>      N/A              Indirizzo e-mail>      
XXXXXXXXX@gmail.com      Commento articolo  BLACKLISTVolevo sapere 
se rientrano perchè vedo che la taglia 48/50 è terminata ...Commenti 
sulla vestibilità            Lunghezza>      Viel zu kurz              
Larghezza>      Viel zu eng              Taglia>                     
Varianti>                     Statura>                                 
Rezensions-ID:        9430069                    Creata:                  
01.01.2017 12:37:16                                    Letzte Änderung                  
05.01.2017 07:52:42                            di        YYYYYYY                            
 Data pubblicazione:                                                                              
Modifica  Scegli un destinatario>  Cancella la lista destinatari  
<\/option>XXXXXXX@XXXXXXX.it<\/option><\/select>    Invia recensione  
Traduci>    Feedback al cliente>    Tipo di recensione>  
Recensione<\/option>Risposte<\/option>Archivio<\/option><\/select>      
Pubblicata>                      Sì        No              Salva 
recensione   Cancella recensioni                    
').trigger('repaint');
reviews.initEditReviewTab();
$('#reviews-tab-navigation').tabs('option', 'active', 0);
$('.search-tab-buttons').html('              Cerca      Ricerca standard      
Statistiche      ');
$('.mini-statistics').replaceWith('            Da controllare: 90 / 
Pubblicata: 301968 / Non pubblicata: 9198 / Prenotate: [0], mie: [0]      
');

        Lunghezza>      Viel zu kurz              Larghezza>      Viel zu 
eng              Taglia>                     Varianti>                     
Statura>                                 Rezensions-ID:        9430069                    
Creata:                  01.01.2017 12:37:16                                    
Letzte Änderung                  05.01.2017 07:52:42                            
di        YYYYYY                            Data pubblicazione:                                                                              
Modifica  Scegli un destinatario>  Cancella la lista destinatari  
<\/option>XXXXXX@XXXXXX.it<\/option><\/select>    Invia recensione  
Traduci>    Feedback al cliente>    Tipo di recensione>  
Recensione<\/option>Risposte<\/option>Archivio<\/option><\/select>      
Pubblicata>                      Sì        No              Salva 
recensione   Cancella recensioni                    
').trigger('repaint');
reviews.initEditReviewTab();
$('#reviews-tab-navigation').tabs('option', 'active', 0);
$('.search-tab-buttons').html('              Cerca      Ricerca standard      
Statistiche      ');
$('.mini-statistics').replaceWith('            Da controllare: 90 / 
Pubblicata: 301968 / Non pubblicata: 9198 / Prenotate: [0], mie: [0]      
');

              Rezensions-ID:        9430069                    Creata:                  
01.01.2017 12:37:16                                    Letzte Änderung                  
05.01.2017 07:52:42                            di        YYYYYYY                            
Data pubblicazione:                                                                              
Modifica  Scegli un destinatario>  Cancella la lista destinatari  
<\/option>XXXXXXX@XXXXXXX.it<\/option><\/select>    Invia recensione  
Traduci>    Feedback al cliente>    Tipo di recensione>  
Recensione<\/option>Risposte<\/option>Archivio<\/option><\/select>      
Pubblicata>                      Sì        No              Salva 
recensione   Cancella recensioni                    
').trigger('repaint');
reviews.initEditReviewTab();
$('#reviews-tab-navigation').tabs('option', 'active', 0);
$('.search-tab-buttons').html('              Cerca      Ricerca standard      
Statistiche      ');
$('.mini-statistics').replaceWith('            Da controllare: 90 / 
Pubblicata: 301968 / Non pubblicata: 9198 / Prenotate: [0], mie: [0]      
');

        Cerca      Ricerca standard      Statistiche      ');
$('.mini-statistics').replaceWith('            Da controllare: 90 / 
Pubblicata: 301968 / Non pubblicata: 9198 / Prenotate: [0], mie: [0]      
');

我不明白为什么它会重复几次内容:我只需要一次信息,顺便说一下,并不是所有的信息(只是第一块结果的第一部分,在评论.initEditReviewTab();"). 你知道吗

如有任何意见或建议,我们将不胜感激。你知道吗

提前谢谢!你知道吗


Tags: dividtableselectlabeltrreplaceclass