试试这个代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.footasylum.com/page/search/?term=Nike%20Air%20Force%201')
p = driver.page_source
from bs4 import *
soup = BeautifulSoup(p, 'html.parser')
[[x.text.strip() for x in x.findAll('div')] for x in soup.find('div', {'data-nq-property-value':'search'}).findAll('div', class_='listing-text')]
根据您的评论:
soup.find('div', {'data-nq-property-value':'search'}) 将返回包含搜索结果的 div。每个搜索结果都有一个唯一的 div,其类名称为 listing-text,其中包含您要查找的文本 brand name, shoes model and price。此 div 包含三个没有类的 div,由 .findAll('div') 检索。然后将每个 div 的文本条带化,最后将所有三个项目放在一个列表中。
这可以重写如下:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.footasylum.com/page/search/?term=Nike%20Air%20Force%201')
p = driver.page_source
from bs4 import *
soup = BeautifulSoup(p, 'html.parser')
results_text = soup.find('div', {'data-nq-property-value':'search'}).findAll('div', class_='listing-text')
for item in results_text:
texts = item.findAll('div')
brand = texts[0].text.strip()
name = texts[1].text.strip()
price = texts[2].text.strip()
print([brand, name, price])
结果应该是:
[['Nike', 'Air Force 1 Low SOS Trainer', '£99.99'],
['Nike', 'Infant Air Force 1 Low Trainer', '£44.99'],
['Nike', 'Air Force 1 LV8 Trainer', '£99.99'],
['Nike', 'Air Force 1 Low Trainer', '£99.99'],
['Nike', 'Junior Air Force 1 GS ‘Bred’ Low Trainer', '£54.99'],
['Nike', 'Junior Air Force 1 Low Trainer', '£57.99'],
['Nike', 'Infant Air Force 1 Low Trainer', '£44.99'],
['Nike', 'Junior Air Force 1 Low Trainer', '£64.99'],
['Nike', 'Junior Air Force 1 Crater Flyknit Trainer', '£69.99'],
['Nike', "Womens Air Force 1 '07 Trainer", '£99.99'],
['Nike', "Junior Air Force 1 Low 'Space Jam' Trainer", '£64.99'],
['Nike', 'Womens Air Force 1 Pixel Trainer', '£109.99'],
['Nike', 'Womens Air Force 1 Low Trainer', '£89.99'],
['Nike', 'Womens Air Force 1 Trainer', '£99.99'],
['Nike', 'Air Force 1 Mid Trainer', '£109.99'],
['Nike', 'Air Force 1 LV8 Trainer', '£99.99'],
['Nike', 'Nursery Air Force 1 Low Trainer', '£37.99'],
['Nike', 'Nursery Air Force 1 Low Trainer', '£39.99'],
['Nike', 'Nursery Air Force 1 Low Trainer', '£39.99'],
['Nike', 'Crib Air Force 1 Trainer', '£27.99']]