<p>尝试类似的方法:</p>
<pre><code>from bs4 import BeautifulSoup
import requests
url = 'https://www.jmesales.com/kuriyama-3-4-in-brass-quick-couplings/'
s = requests.Session()
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
res = s.get(url, headers=headers)
soup = BeautifulSoup(res.text,'lxml')
options = [[item['value'], name.text] for item, name in zip(soup.select('#attribute_select_42800 option'), soup.select('#attribute_select_42800 option'))]
id = soup.select_one('input[name^="product_id"]').get('value')
for option in options[1:]:
item_num, item_name = option
data = {'action': 'add', 'attribute[42800]': item_num, 'product_id': id, 'qty[]': '1'}
product = s.post('https://www.jmesales.com/remote/v1/product-attributes/53564', data=data).json()
price = product['data']['price']['without_tax']['formatted']
print(f'Item name: {item_name} Item price: {price}')
</code></pre>
<p>印刷品:</p>
<pre><code>Item name: Part A Female NPT x Male Adapter Item price: $6.30
Item name: Part B Female Coupler x Male NPT Item price: $13.80
Item name: Part C Female Coupler x Hose Shank Item price: $11.50
Item name: Part D Female Coupler x Female NPT Item price: $12.80
Item name: Part E Male Adapter x Hose Shank Item price: $8.50
Item name: Part F Male NPT x Male Adapter Item price: $7.30
Item name: Dust Cap Item price: $11.00
Item name: Dust Plug Item price: $8.10
</code></pre>
<p>以上代码仅以您拥有的特定url为例,可以解析多个url:</p>
<pre><code>url = 'https://www.jmesales.com/dixon-brass-female-ght-x-female-npt-adapter-lead-free/'
s = requests.Session()
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
res = s.get(url, headers=headers)
soup = BeautifulSoup(res.text,'lxml')
attrid = re.findall('\[([\d]+)\]', soup.select_one('.form-select.form-select small').get('name'))[0]
options = [[item['value'], name.text] for item, name in zip(soup.select(f'#attribute_select_{attrid} option'), soup.select(f'#attribute_select_{attrid} option'))]
id = soup.select_one('input[name^="product_id"]').get('value')
for option in options[1:]:
item_num, item_name = option
data = {'action': 'add', f'attribute[{attrid}]': item_num, 'product_id': id, 'qty[]': '1'}
product = s.post(f'https://www.jmesales.com/remote/v1/product-attributes/{id}', data=data).json()
price = product['data']['price']['without_tax']['formatted']
print(f'Item name: {item_name} Item price: {price}')
</code></pre>