【发布时间】:2013-11-19 19:14:22
【问题描述】:
我有一个网站:
http://www.custojusto.pt/Lisboa?ca=14_s&th=1&q=macbook&cg=0&w=1
我想获取所有广告的名称和数组中项目的值,我现在拥有的是:
import urllib2
from BeautifulSoup import BeautifulSoup
import re
listofads = []
page = urllib2.urlopen("http://www.custojusto.pt/Lisboa?ca=14_s&th=1&q=macbook&cg=0&w=1").read()
soup = BeautifulSoup(page)
for a in soup.findAll("div", {"class":re.compile("lista")}):
for i in a:
c = soup.findAll('h2')
y = soup.findAll("span", {"class":re.compile("right")})
listofads.append(c)
listofads.append(y)
print listofads
我得到的是这样的:
</h2>, <h2> Procura: Macbook Pro i7, 15' </h2>], [<span class="right">50 €</span>
看起来很糟糕....我想得到:
Macbook bla bla . price = 500
Macbook B . price = 600
等等
网站的html是这样的:
<div class="listofads">
<div class="lista " style="cursor: pointer;">
<div class="lista " style="cursor: pointer;">
<div class="li_image">
<div class="li_desc">
<a href="http://www.custojusto.pt/Lisboa/Laptops/Macbook+pro+15-11018054.htm?xtcr=2&" name="11018054">
<h2> Macbook pro 15 </h2>
</a>
<div class="clear"></div>
<span class="li_date largedate listline"> Informática & Acessórios - Loures </span>
<span class="li_date largedate listline">
</div>
<div class="li_categoria">
<span class="li_price">
<ul>
<li>
<span class="right">1 199 €</span>
<div class="clear"></div>
</li>
<li class="excep"> </li>
</ul>
</span>
</div>
<div class="clear"></div>
</div>
如您所见,我只想要“li_desc”类的 div 上的 H2 值(文本)和“right”类的跨度的价格。
【问题讨论】:
标签: python web-scraping beautifulsoup