2017-11-25 4 views
2

私はいくつかのデータをウェブサイトから削り取ろうとしています。これはhtml形式です。私は"No description for 632930413867".ウェブスクラップ用の美しいものが動作していませんか?

HTMLコード語をこすりしたい:このHTMLから

<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6"> 
    <table class="table product_info_table"> 
    <tbody> 
     <tr> 
     <td>GS1 Address</td> 
     <td>R.R. 1, Box 2, Malmo, NE 68040</td> 
     </tr> 
     <tr> 
     <td>Description</td> 
     <td> 
      <div id="read_desc"> 
      No description for 632930413867 
      </div> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</div> 

や画像SRC

<div class="centered_image header_image"> 
<img src="https://images-na.ssl-images-amazon.com/images/I/416EuOE5kIL._SL160_.jpg" title="UPC 632930413867" alt="UPC 632930413867"> 

ので、私は、このコード

Baseurl = "https://www.buycott.com/upc/632930413867" 
uClient = '' 
while uClient == '': 
    try: 
     uClient = requests.get(Baseurl) 
     print("Relax we are getting the data...") 

    except: 
     print("Connection refused by the server..") 
     print("Let me sleep for 7 seconds") 
     time.sleep(7) 
     print("Was a nice sleep, now let me continue...") 
     continue 


page_html = uClient.content 

uClient.close() 
page_soup = soup(page_html, "html.parser") 

Productcontainer = page_soup.find_all("div", {"class": "row"}) 
link = page_soup.find(itemprop="image") 

print(Productcontainer) 

for item in Productcontainer: 
    print(link) 
    productdescription = Productcontainer.find("div", {"class": "product_info_table"}) 
    print(productdescription) 
を使用します

このコードを実行すると、データは表示されません。どのように記述とimg srcを得ることができますか?

答えて

3

あなたは直接のfind()、この場合は()find_allを使用する必要はありません使用してそれらに行くことができるように、ページ上の各(項目とproductdescription)のただ一つのインスタンスがあります:

import requests 
from bs4 import BeautifulSoup as soup 

Baseurl = "https://www.buycott.com/upc/632930413867" 
uClient = '' 
while uClient == '': 
    try: 
     uClient = requests.get(Baseurl) 
     print("Relax we are getting the data...") 

    except: 
     print("Connection refused by the server..") 
     print("Let me sleep for 7 seconds") 
     time.sleep(7) 
     print("Was a nice sleep, now let me continue...") 
     continue 

page_html = uClient.content 
uClient.close() 

page_soup = soup(page_html, "html.parser") 
productdescription = page_soup.find("div", {"id": "read_desc"}).text 
link = page_soup.find("div", {"class": "centered_image header_image"}).find("img")['src'] 
print (productdescription) 
print (link) 

出力:

Relax we are getting the data... 

No description for 632930413867 

https://images-na.ssl-images-amazon.com/images/I/416EuOE5kIL._SL160_.jpg 
1

あなたはそれをグーグルでbeautifulsoup使用について何も見つからなかった場合は、そこここに良いチュートリアル:
https://www.dataquest.io/blog/web-scraping-tutorial-python/
あなたの質問から、私はあなたがこの上の初心者印象を受けました。そうでない場合は、質問を編集して、具体的にあなたが知っていないことを言ってください。

2

あなただけのhtmlを検査し、あなたがこすりしたいデータを保持するタグを識別することがあります。
この場合、画像はdiv.centered_image.header_image img、説明はdiv#read_descです。
bs4 css selectorsと例:

import requests 
from bs4 import BeautifulSoup 

baseurl = "https://www.buycott.com/upc/632930413867" 
page_html = requests.get(baseurl).content 
soup = BeautifulSoup(page_html, "html.parser") 
image = soup.select_one('div.centered_image.header_image img')['src'] 
description = soup.select_one('div#read_desc').text.strip() 

print(image) 
print(description) 

https://images-na.ssl-images-amazon.com/images/I/416EuOE5kIL.SL160.jpg
これは、同様に次のように行うことができます632930413867

0

には説明:

import requests 
from bs4 import BeautifulSoup 

soup = BeautifulSoup(requests.get("https://www.buycott.com/upc/632930413867").text, "lxml") 
desc = soup.select("#read_desc")[0].text.strip() 
link = soup.select(".centered_image img")[0]['src'].strip() 
print("{}\n{}".format(desc,link)) 

出力:

No description for 632930413867 
https://images-na.ssl-images-amazon.com/images/I/416EuOE5kIL._SL160_.jpg 
関連する問題