<p>原因是<code>price = soup.find('span')</code></p>
<p><code>.find()</code>将获取它找到的第一个元素。你让它查看你的<code>soup</code>对象。但是你想要它看的地方,在你的<code>a</code>之内,因为这就是你用<code>for a in links:</code>循环的地方</p>
<p>我还添加了<code>.text</code>,因为我假设您只需要文本,而不是整个标记元素。即<code>price = a.find('span').text</code></p>
<pre><code>import csv ; import requests
from bs4 import BeautifulSoup
outfile = open('pistonheads.csv','w', newline='')
writer = csv.writer(outfile)
writer.writerow(["Link", "Make", "Model", "Price", 'Images'])
url = 'https://www.pistonheads.com/classifieds?Category=used-cars&Page=1&ResultsPerPage=100'
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, 'html.parser')
car_link = soup.find_all('div', 'listing-headline', 'price')
for div in car_link:
links = div.findAll('a')
for a in links:
link = ("https://www.pistonheads.com" + a['href'])
make = (a['href'].split('/')[-4])
model = (a['href'].split('/')[-3])
price = a.find('span').text
image_link = a.parent.parent.find('img')['src']
image = link + image_link
writer.writerow([link, make, model, price, image])
print(link, make, model, price, image)
outfile.close()
</code></pre>