python爬數據,得到一個列表,但怎麼去掉裡面的span標籤呢?
我想大声告诉你
我想大声告诉你 2017-05-18 10:55:53
0
3
990

用p6ython3.6爬下了部分數據,但最後顯示的是含span標籤的列表,當我用get_text、contents等方法,就會報錯。這是為什麼呢?
最開始回傳的結果如下:

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

我的程式碼如下:

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

全部回覆(3)
仅有的幸福

bs的API記得不是很清楚了,應該是有可以直接獲取文本的函數的,應該是get_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>(.*?)<這個pattern。但是也得像上面那樣遍歷這個contens列表才行。

phpcn_u1582

題主可以試試 text_content() 方法

左手右手慢动作

正規表示式或split+SUBSTRING也可以,靈活著用

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!