我发现了类似的问题,但没有一个能直接解决我的问题。我已经做了大约一个星期了,运气不好
我正试图从这个链接中获取数据:https://www.truecar.com/prices-new/chevrolet/malibu-pricing/?zipcode=44070
问题是,我要查找的值没有span class属性,但在使用div class属性时,它与页面上的其他值共享相同的名称。我希望我的代码返回$22807,但是我尝试的任何东西都返回$25195或[]。请参阅以下HTML:
<div class="text-right col-3 col-sm-4 col-md-6">
<div class="label-block label-block-1 label-block-sm-2 text-muted" data-qa="vehicle-header-msrp"
data-test="vehicleHeaderMsrp">
<div class="label-block-title" data-qa="LabelBlock-title" data-test="labelBlockTitle"></div>
<div class="label-block-subtitle" data-qa="LabelBlock-subTitle" data-test="labelBlockSubTitle"></div>
<div data-qa="LabelBlock-text" class="label-block-text" data-test="labelBlockText">
<span class="pricing-block-amount-strikethrough">$25,195</span>
</div>
</div>
</div>
<div class="text-right col-3 col-sm-4 col-md-6">
<div class="label-block label-block-1 label-block-sm-2" data-qa="vehicle-header-average-market-price"
data-test="vehicleHeaderAverageMarketPrice">
<div class="label-block-title" data-qa="LabelBlock-title" data-test="labelBlockTitle"></div>
<div class="label-block-subtitle" data-qa="LabelBlock-subTitle" data-test="labelBlockSubTitle"></div>
<div data-qa="LabelBlock-text" class="label-block-text" data-test="labelBlockText">
<span class="">$22,807</span>
</div>
</div>
</div>
我可以通过以下代码轻松获得返回的$25195:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
headers = {
"User-Agent":
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:70.0) Gecko/20190101 Firefox/70.0"
}
url = "https://www.truecar.com/prices-new/chevrolet/malibu-pricing/?zipcode=44070"
print(url)
page = requests.get(
url,
headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
test = soup.find('span', {'class': 'pricing-block-amount-strikethrough'})
print(test.get_text())
但我尝试的电话组合不会返回我需要的22807美元
有趣的是,如果我使用
test = soup.find('div', {'class': 'label-block label-block-1 label-block-sm-2 text-muted'})
因此,我假设我可以简单地删除“文本静音”部分,如:
test = soup.find('div', {'class': 'label-block label-block-1 label-block-sm-2'})
获取22美元的数字,但它只返回[]
免责声明:我需要的美元金额经常变化,因此,如果您在这方面提供帮助,最终得到的数字与22807美元略有不同,它可能仍然是正确的。如果你点击链接,我要找的数字是“市场平均水平”,而不是“MSRP”
谢谢大家!
如果您浏览页面,它需要时间才能获得您要查找的第二个值。在“请求”模块中,它可以快速获取内容,而不必等待内容完全加载。这就是添加含bs4的硒元素的地方。添加等待站点加载,然后获取页面内容
你可以从link下载geckodriver
相关问题 更多 >
编程相关推荐