我怎样才能只从另一个列表中的列表中获取文本?

How can I get only a text from lists that are on another list?

今天我正在学习如何在 python 上使用 BeautifulSoup,并且有一次,我必须处理一个列表中的列表。问题是我不知道如何应用 .text 或类似的列表。这是我的代码:

 from typing import List
from bs4 import BeautifulSoup
import requests
import pandas as pd
from decimal import Decimal

ListaPreciosCromos = list()

ListaUrl = ['https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_495570&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc', 'https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_540190&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc', 'https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_607210&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc']
PageCromos = [requests.get(x) for x in ListaUrl]
SoupCromos = [BeautifulSoup(x.content, "html.parser") for x in PageCromos]
PrecioCromos = [x.find_all("span", {"data-price": True}) for x in SoupCromos]

for x in PrecioCromos:
    PreciossinText = x.text

print(PreciossinText)

显示下一个错误 = AttributeError: ResultSet 对象没有属性 'text'。您可能将元素列表视为单个元素。当您打算调用 find() 时,您是否调用了 find_all()?

试试这个:

from typing import List
from bs4 import BeautifulSoup
import requests
import pandas as pd
from decimal import Decimal

ListaPreciosCromos = list()

ListaUrl = ['https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_495570&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc', 'https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_540190&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc', 'https://steamcommunity.com/market/search?category_753_Game%5B%5D=tag_app_607210&category_753_cardborder%5B%5D=tag_cardborder_0&category_753_item_class%5B%5D=tag_item_class_2#p1_price_asc']
PageCromos = [requests.get(x) for x in ListaUrl]
SoupCromos = [BeautifulSoup(x.content, "html.parser") for x in PageCromos]
PrecioCromos = [x.find_all("span", {"data-price": True}) for x in SoupCromos]        
        
PreciossinText = [txt.text for x in PrecioCromos for txt in x]

print(PreciossinText)

输出:

['[=11=].05 USD', '[=11=].05 USD', '[=11=].04 USD', '[=11=].05 USD', '[=11=].04 USD', '[=11=].05 USD', '[=11=].05 USD', '[=11=].07 USD', '[=11=].06 USD', '[=11=].07 USD', '[=11=].06 USD', '[=11=].06 USD', '[=11=].06 USD', '[=11=].05 USD', '[=11=].06 USD', '[=11=].05 USD', '[=11=].07 USD']

试试这个

texts = [result.text for result_set in PrecioCromos for result in result_set]