recherche

Maison  >  Questions et réponses  >  le corps du texte

Python explore les données et obtient une liste, mais comment y supprimer la balise span ?

J'ai utilisé p6ython3.6 pour analyser certaines données, mais ce qui a finalement été affiché était une liste contenant des balises span. Lorsque j'utilisais get_text, contents, etc., une erreur était signalée. Pourquoi est-ce?
Les premiers résultats retournés sont les suivants :

[<span>2017.5.2</span>]
[<span>2017.4.26</span>]
[<span>2017.4.24</span>]
[<span>2017.4.19</span>]
[<span>2017.3.23</span>]
[<span>2017.3.17</span>]
[<span>2017.2.14</span>]
[<span>2017.2.9</span>]
[<span>2017.2.6</span>]
[<span>2017.2.6</span>]

Mon code est le suivant :

import requests
from bs4 import BeautifulSoup
import re

# def url_list():
#     for number in range(1,21):
#         url_links=[]
#         url="X".format(i=number)
#         url_links.append(url)

h={"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36"}
r=requests.get("url",headers=h)
soup=BeautifulSoup(r.text,'lxml')

for data in soup.find("p",{"class":"list-main-eventset-finan"}).find_all("li"):
    content=data.find("i",{"class":"cell date"}).find_all("span")
    print(time)
我想大声告诉你我想大声告诉你2756 Il y a quelques jours1004

répondre à tous(3)je répondrai

  • 仅有的幸福

    仅有的幸福2017-05-18 10:57:53

    Je ne me souviens pas très bien de l'API de bs. Il devrait y avoir une fonction qui peut obtenir directement du texte. Ce devrait être la fonction get_text(). Puisque vous utilisez find_all(), vous devez parcourir à nouveau les résultats renvoyés, c'est toutget_text()这个函数吧。由于你用的是find_all(),那么需要再在返回的结果下做一次遍历,就是这样

    rs = list()
    for data in soup.find("p",{"class":"list-main-eventset-finan"}).find_all("li"):
        contents=data.find("i",{"class":"cell date"}).find_all("span")
        for content in contents:
            rs.append(content.get_text())
      

    此外,也可以使用正则表达式来匹配,直接匹配<span>(.*?)< rrreee De plus, vous pouvez également utiliser des expressions régulières pour faire correspondre, en faisant directement correspondre le modèle <span>(.*?)<. Mais vous devez parcourir la liste des contenus comme ci-dessus.

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:57:53

    L'interrogateur peut essayer la text_content()méthode

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-18 10:57:53

    Les expressions régulières ou split+SUBSTRING peuvent également être utilisées, utilisez-les avec flexibilité

    répondre
    0
  • Annulerrépondre