【发布时间】:2012-12-16 19:18:47
【问题描述】:
普通代码:
# -*- coding: cp1252 -*-
import csv
import urllib2
import sys
import time
from bs4 import BeautifulSoup
from itertools import islice
page = urllib2.urlopen('http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html').read()
soup = BeautifulSoup(page)
prices = soup.findAll('div', {"class": "price"})
在此之后,我尝试使用以下代码来获取数据: 代码 1:
for price in prices:
print unicode(price.string).encode('utf8')
Output1:无输出,代码运行没有任何错误并且什么也不打印。
代码 2:
for price in prices:
textcontent3= u' '.join(price.stripped_strings)
if textcontent3:
print textcontent3
Output2:再次没有输出,和Output1一样。
代码 3:
for price in prices:
fonttag = price.find('div')
if fonttag is not None:
print unicode(fonttag.string).encode('utf8').strip()
Output3:无输出,和Output1一样
在此之后,我尝试打印 html 的相关部分:
代码 4:
print prices
输出4:
</span></div>, <div class="price">
<span id="price"><br/>
</span></div>, <div class="price">
<span id="price"><br/>
</span></div>]
从 Output4 中可以看出,html 漂亮的汤正在为我刮花,没有任何价格价值。在网页上,此 html 结构如下所示:
<div class="price"><span id="price">49,90 €</span><br>einmalig</div>
Beautiful soup 没有提取 html 页面中提到的价格值,因此我无法抓取价格数据。 请帮助我解决这个问题并原谅我的无知,因为我是编程新手。
【问题讨论】:
-
页面使用 JavaScript 将
<span id="price">元素替换为页面中嵌入的大量 JavaScript 数据的价格。您需要从那里提取它。 -
我该怎么做?有什么我可以立即学习或使用的东西吗?我没有 Javascript 和 html 的背景。
标签: python-2.7 html-parsing screen-scraping beautifulsoup html