新手写二手车网站爬虫,爬卖价和原价,原价以<s>删除线形式放在<p class="priType-s">下。但是遇到没有标记原价,也就是并没有<s>标签的情况下,会自动把下一个<s>内的信息写入上一条占位。试了用if len()判断,但是毫无效果。。请问这种情况应当如何解决,把没有<s>标签的情况正确提取出来,用“”或“nodata”显示?
网页源代码如下,
同时包含原价与卖价的:
<p class="priType-s">
<em class="tag-red">急售</em>
<em class="tag-yellow">超值</em>
<span>
<i class="fc-org priType">
8.40万
</i>
</span>
<s>17.36万</s>
</p>
没有原价标签的:
<p class="priType-s">
<span>
<i class="fc-org priType">
3.70万
</i>
</span>
</p>
代码如下,
import requests
from bs4 import BeautifulSoup
def GetInfo(url):
res=requests.get(url).text
soup=BeautifulSoup(res,'html.parser')
names=soup.select('p.list > ul > li > p > p.infoBox > a')
years=soup.select('p.list > ul > li > p > p.fc-gray')
prices0=soup.select('p.list > ul > li > p > p.priType-s > s')
prices1=soup.select('p.list > ul > li > p > p.priType-s > span > i')
for name,year,price0,price1 in zip(names,years,prices0,prices1):
data={
'name':name.get_text(),
'year':year.get_text().strip().replace('|','').replace(' ',''),
'price0':price0.get_text(),
'price1':price1.get_text().strip()
}
print(data)
return(data)
def Pages():
pageurl='https://www.guazi.com/sh/buy/o{}/'
urls=[pageurl.format(str(i)) for i in range(1,11,1)]
for url in urls:
GetInfo(url)
Pages()
일반적인 아이디어는 더 많은 선택기를 추가하고 이를 비운 다음 결정을 내리는 것입니다
으아악
해 보세요.
그래도 작동하지 않으면 전체 단락을 가져와서 정규식을 사용하여 추출하겠습니다
이 아이디어를 시도해 보세요.
1. 각 중고차에는 표시할 블록이 있습니다. <p>..</p> 2. 각 블록에서 다시 캡처합니다. 원가와 현가
이렇게 하면 중고차는 원가가 없기 때문에 다음 가격대는 이전 차의 원가로 채워지지 않습니다