Rumah  >  Soal Jawab  >  teks badan

Python merangkak data dan mendapat senarai, tetapi bagaimana untuk mengalih keluar tag span di dalamnya?

Saya menggunakan p6ython3.6 untuk merangkak ke bawah beberapa data, tetapi yang akhirnya dipaparkan ialah senarai yang mengandungi teg span Apabila saya menggunakan get_text, kandungan, dll., ralat akan dilaporkan. kenapa ni?
Keputusan awal yang dikembalikan adalah seperti berikut:

[<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>]

Kod saya adalah seperti berikut:

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)
我想大声告诉你我想大声告诉你2686 hari yang lalu952

membalas semua(3)saya akan balas

  • 仅有的幸福

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

    Saya tidak ingat API bs dengan jelas mesti ada fungsi yang boleh mendapatkan teks secara langsung. Ia sepatutnya fungsi get_text(). Memandangkan anda menggunakan find_all(), anda perlu melintasi hasil yang dikembalikan semula, itu sahajaget_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 Selain itu, anda juga boleh menggunakan ungkapan biasa untuk dipadankan, padanan terus dengan corak <span>(.*?)<. Tetapi anda perlu merentasi senarai kandungan seperti di atas.

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:57:53

    Penyoal boleh mencuba kaedah text_content()

    balas
    0
  • ringa_lee

    ringa_lee2017-05-18 10:57:53

    Ekspresi biasa atau split+SUBSTRING juga boleh digunakan, gunakannya secara fleksibel

    balas
    0
  • Batalbalas