0

我正在尝试http://www.verizonwireless.com/wcms/consumer/shop/share-everything.html使用下面提到的代码从该网页上抓取数据:

# -*- coding: cp1252 -*-
import csv
import urllib2
import sys
import urllib
import time
from bs4 import BeautifulSoup
from itertools import islice


url = 'http://www.verizonwireless.com/wcms/consumer/shop/share-everything.html'
user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;Trident/5.0)'
req = urllib2.Request(url,headers={ 'User-Agent' : user_agent })
response = urllib2.urlopen(req)
page = response.read()
soup = BeautifulSoup(page)

tabcontent = soup.find('div', {"id": "uttsdPlanOptions", "class": "priceCol2"})
content = tabcontent.findAll('tr')
print content

打印内容后,我意识到我没有获得网站上提到的 GB 中的数据值,当我尝试检查“GB”部分的元素时,我发现了这个 html 结构<p class="ptData">Shareable Data</p>在这部分中没有提到 GB,也没有链接图像这可以解释 GB 的缺失值。

4

1 回答 1

0

您正在查找的值不作为文本存在。它是从 URL 获取/content/dam/vzw/lobs/consumer/shop/share-everything/data-sprite.png并使用 CSS 代码裁剪为大小的图像:

.ptData{min-width:74px;background:transparent url(/content/dam/vzw/lobs/consumer/shop/share-everything/data-sprite.png) no-repeat;padding-top:52px;display:block;}
.data300mb .ptData{background-position:center top;}
.data1 .ptData{background-position:center -72px;}
.data2 .ptData{background-position:center -144px;}
.data4 .ptData{background-position:center -216px;}
.data6 .ptData{background-position:center -288px;}
.data8 .ptData{background-position:center -360px;}
.data10 .ptData{background-position:center -432px;}
.data12 .ptData{background-position:center -504px;}
.data14 .ptData{background-position:center -576px;}
.data16 .ptData{background-position:center -648px;}
.data18 .ptData{background-position:center -720px;}
.data20 .ptData{background-position:center -792px;}
.data30 .ptData{background-position:center -864px;}
.data40 .ptData{background-position:center -936px;}
.data50 .ptData{background-position:center -1008px;}

您尝试从中获取值的表具有如下记录:

<td class="data2">
    <p>Unlimited Talk &amp; Text with</p>
    <p class="ptData">Shareable Data</p>
</td>

标签的属性class根据前面(继承)的属性获取图像。所以可以从标签中的属性值中导出你想要的值。<p>class<td>class<td>

于 2013-01-31T11:32:23.293 回答