Python 2.7.6 + BeautifulSoup 4 +在这里请求noob。
我的问题是关于搜索div类的内容,例如on this site。 我只想在每列包含信息时使用行的内容。 我能够编写一段代码来提取fuelprice的div级内容(在网站上是第1列)。有时,首先列出的加油站是关闭的,没有价格出现。所以我的代码抓住了实际包含价格的第一个div。
pricediv = soup.find("div", {"class": "price"})
price = pricediv.text
接下来,我想获取我从中提取价格的加油站的名称和地址,这些加油站包含在另外两个div类中。我怎么做
location = soup.find("div", {"class": "location_name"})
开始搜索包含我先前提取的汽油价格的div级的位置?否则,如果前两个加油站关闭,我的可变价格将包含第三加油站的汽油价格。但是如果我运行代码来找到位置(如上所述),它将返回第一个位置(封闭的加油站号1)。所以我希望它开始在price-div之后寻找位置div。
我希望我明确表达了我要找的东西,而且有人可能会暗示我。提前谢谢!
答案 0 :(得分:0)
根据您提供的链接,您的价格 div是 priceblock div 的子级,这也是 price_entry_table div 的子级,所以在为了找到你想要的 div ,你需要使用parent
,它应该是这样的:
pricediv = soup.find('div', {'class': 'price'})
price = pricediv.text
# use parent.parent to get to the price_entry_table div, then find location_name
locationdiv = pricediv.parent.parent.find('div', {'class': 'location_name'})
location = locationdiv.text
print price, location
# sample result
1.379 Tankstelle Wagner/DBV Würzburg
此外,如果您需要访问所有div
,您可能希望使用像@PadraicCunningham这样的findAll
,如下所示:
for pricediv in soup.findAll('div', {'class': 'price'}):
price = pricediv.text
... do your remaining code here ...