下面的代码返回大量的span结果,我如何循环遍历每个跨度(其中有6个,参见下面的一个例子)来提取‘数据-股票’?我注意到没有span类,因此,为什么我被困在如何循环这个问题上。
非常感谢!
import requests
from bs4 import BeautifulSoup
url = "https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/playstation-5/playstation-5-games/sackboy-a-big-adventure-ps5/p/191447"
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14'
headers = {'User-Agent': user_agent,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, "html5lib")
gear = soup.find_all('div', class_ = 'instoreMessage')
print(gear)生产:
[
Available only in store. <span data-channel="CLICK_AND_COLLECT" data-location="" data-stock="PREORDER" style="display:none">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td class="check_i" valign="top" width="3%"><i class="fa fa-check green-check"></i></td>
<td>Smyths <a data-target="#price-promise-mdl" data-toggle="modal" style="cursor: pointer;">Pre-order Price Promise</a></td>
</tr>
</tbody>
</table>
</span>/div
发布于 2020-12-02 09:59:48
从您的gear元素(只有一个)中找到所有的<span>标记。然后遍历该列表并获取data-stock属性:
import requests
from bs4 import BeautifulSoup
url = "https://www.smythstoys.com/uk/en-gb/video-games-and-tablets/playstation-5/playstation-5-games/sackboy-a-big-adventure-ps5/p/191447"
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14'
headers = {'User-Agent': user_agent,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, "html5lib")
gear = soup.find_all('div', class_ = 'instoreMessage')
print(gear)
spans = gear[0].find_all('span')
for span in spans:
print (span['data-stock'])输出:
CCUNAVAILABLEONLYPREORDER
PREORDER
PREORDER
PREORDER
PREORDER
INSTOCK
INSTOCKhttps://stackoverflow.com/questions/65105515
复制相似问题