2015-08-16 15 views
0

我試圖從這website刮一堆信息。什麼是適當的標籤刮那些特定的信息?

我需要通過產品獲得產品列表看起來像:

[名稱,包裝,價格/公斤]

所以,對於第一個我的輸出是三個列表看起來像。

  • [法國皇家獸醫飲食 - 防過敏DR 21,7千克,4,84]
  • [法國皇家獸醫飲食 - 防過敏DR 21,14千克,3,71]
  • [法國皇家獸醫飲食 - 防過敏DR 21,14kg,3,71]

我已經設法在名稱列表中獲取名稱。

from bs4 import BeautifulSoup 
import csv 
import urllib.request 
from collections import * 
import time 
start_time = time.clock() 

page_0=urllib.request.urlopen("http://www.zooplus.co.uk/shop/dogs/dry_dog_food/royal_canin_vet_diet") 
soup_0 = BeautifulSoup(page_0.read(),"html.parser") 
restricted_webpage=soup_0.find_all("tbody", {"class":"product-variants-list"}) 
readable_restricted_webpage=str(restricted_webpage) 
soup_1 = BeautifulSoup(readable_restricted_webpage,"html.parser") 

title=soup_1.find_all("tr", {"style":["background-color:#ffffff;", "background-color:#ededed;"]}) 

soup_title = BeautifulSoup(str(title),"html.parser") 
name=[] 



for b in soup_title.find_all("b"): 
    name.append(str(b).replace("<b>","").replace("</b>","")) 

這兩個其他的信息很難得到我。 我看不到標籤,我可以用它來獲得(包裝,價格/公斤)夫婦的標籤。

我試了多個標籤,最近我得到了:("td", {"style":"background-color:#ededed;"},{"valign":"top"})但我想我應該使用<span>這種或那種方式?

你將如何繼續傢伙?

回答

1
from bs4 import BeautifulSoup 
import urllib2 

url = 'http://www.zooplus.co.uk/shop/dogs/dry_dog_food/royal_canin_vet_diet' 
response = urllib2.urlopen(url) 
html = response.read() 
soup = BeautifulSoup(html,"html.parser") 

product_list = soup.find_all("tbody", {"class":"product-variants-list"}) 

i=0 

def visible(text): 
    lines = (line.strip() for line in text.splitlines()) 
    # break multi-headlines into a line each 
    chunks = (phrase.strip() for line in lines for phrase in line.split(" ")) 
    # drop blank lines 
    text = ''.join(chunk for chunk in chunks if chunk) 
    return text 

for product in product_list: 

    product_name = product.find("a",{"class":"follow3"}).find("b").text 
    print i, product_name 
    product_variants = product.find_all("tr",{"class":"product-variant"}) 

    i +=1 



    for variant in product_variants: 
     product_weight = variant.find_all("td")[0].string 
     print '-'+product_weight, 
     print ' | ', 
     if variant.find_all("td")[1].find("span",{"class":"specialPrices"}) is not None: 
      product_price = variant.find_all("td")[1].find("span",{"class":"specialPrices"}).find("span",{"class":"smalltextPrices"}).get_text(" ", strip=True) 
      product_price_per_kg = visible(product_price) 
     else: 
      product_price = variant.find_all("td")[1].find("span",{"class":"smalltext"}).get_text(" ", strip=True) 
      product_price_per_kg = visible(product_price) 

     print product_price_per_kg 

輸出:

0 Royal Canin Veterinary Diet - Hypoallergenic DR 21 
-- 7kg | (£4.84/ kg) 
-- 14kg | (£3.71/ kg) 
-- Economy Pack: 2 x 14kg | (£3.68/ kg) 
1 Royal Canin Veterinary Diet - Sensitivity Control SC 21 
-- 7kg | (£5.13/ kg) 
-- 14kg | (£3.78/ kg) 
-- Economy Pack: 2 x 14kg | (£3.71/ kg) 
2 Royal Canin Veterinary Diet - Gastro Intestinal GI 25 
-- 2kg | (£6.95/ kg) 
-- 7.5kg | (£5.05/ kg) 
-- 14kg | (£3.56/ kg) 
-- Economy Pack: 2 x 14kg | (£3.50/ kg) 
3 Royal Canin Veterinary Diet - Renal RF 14 
-- 7kg | (£4.99/ kg) 
-- 14kg | (£3.49/ kg) 
-- Economy Pack: 2 x 14kg | (£3.43/ kg) 
4 Royal Canin Veterinary Diet - Obesity Management DP 34 
-- 6kg | (£4.82/ kg) 
-- 14kg | (£3.56/ kg) 
-- Economy Pack: 2 x 14kg | (£3.50/ kg) 
5 Royal Canin Veterinary Diet - Urinary S/O LP 18 
-- 7.5kg | (£5.05/ kg) 
-- 14kg | (£3.56/ kg) 
-- Economy Pack: 2 x 14kg | (£3.50/ kg) 
6 Royal Canin Veterinary Diet - Mobility MS 25 
-- 7kg | (£4.99/ kg) 
-- 14kg | (£4.06/ kg) 
-- Economy Pack: 2 x 14kg | (£3.93/ kg) 
7 Royal Canin Veterinary Diet - Satiety Support SAT 30 
-- 12kg | (£3.99/ kg) 
-- Economy Pack: 2 x 12kg | (£3.91/ kg) 
8 Royal Canin Veterinary Diet - Hepatic HF 16 
-- 6kg | (£5.32/ kg) 
-- 12kg | (£3.99/ kg) 
-- Economy Pack: 2 x 12kg | (£3.91/ kg) 
9 Royal Canin Veterinary Diet - Dental DLK 22 
-- 14kg | (£4.14/ kg) 
-- Economy Pack: 2 x 14kg | (£4.07/ kg) 
10 Royal Canin Veterinary Diet - Diabetic DS 37 
-- 7kg | (£4.99/ kg) 
-- 12kg | (£3.91/ kg) 
-- Economy Pack: 2 x 12kg | (£3.75/ kg) 
11 Royal Canin Veterinary Diet - Calm CD 25 
-- 4kg | (£6.72/ kg) 
-- Economy Pack: 2 x 4kg | (£6.61/ kg) 
相關問題