2016-08-07 32 views
1

私はこの種の質問が既にたくさんあることを知っています。 しかし、私はそれらのQnAで私の問題を解決することができませんでした。なぜBeautifulSoupでタグを取得できないのですか

私の状況を最初に説明している[画像]をご覧ください。 ==>http://i.stack.imgur.com/cCeY2.jpg

私の究極の目標は、赤い矩形1で値を取得することです。 私は赤い矩形2の赤い矩形3のタグを美しいスープで読み取ろうとしました。しかし、私はできませんでした。 実際には、赤い矩形2でタグを取得できませんでした。

以下は私のコードです。どうしたの?私は何が欠けていますか?

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

res = urlopen('http://finance.naver.com/item/main.nhn?code=005490') 
soup = BeautifulSoup(res, 'html.parser') 

# 
# I can't find 'table' tag in red rectangle-2 
tag0 = soup.find_all('table', {'class':'gHead03'}) 

i = 0 
while i < tag0.__len__(): 
    print(tag0[i]) 
    i = i + 1 
    print('\n', i) 


# But I can find 'ul'tag out of red rectangle-2 
tag1 = soup.find_all('ul', {'class':'tabs_submenu tab_total_submenu'}) 

i = 0 
while i < tag1.__len__(): 
    print(tag1[i]) 
    i = i + 1 
    print('\n', i) 
###################################################################### 
+1

あなたのコードで 'http://finance.naver.com/item/main.nhn?code = 005490''を使っているのはなぜですか?イメージ上では' http://finance.naver 'です。 com/item/coinfo.nhn?code = 005490'開いた? – parsecer

答えて

3

あなたは、HTMLを使用すると、ドキュメントの下で見ることができる別のURLを使用して取得されることとして、テーブルは表示されませんあなたのイメージどおりにでも正しいURLを使用して戻されたソースを見ればクロームのdevのツールのタブ:

enter image description here

だから、すべてを行う必要があるコードである1つのparamを渡すことです:

from bs4 import BeautifulSoup 

params = {"cmp_cd":"005490"} 
res = requests.get("http://companyinfo.stock.naver.com/v1/company/c1010001.aspx", params=params) 
soup = BeautifulSoup(res.content, 'html.parser') 
tag0 = soup.find('table', {'class':'gHead03'}) 

print(tag0) 

唯一の理由soup.find_all('ul', {'class':'tabs_submenu tab_total_submenu'})は、あなたが実際にそのテーブルから何かを引いていないghead03テーブル内ではありません、ページ上の他のul.tabs_submenuのtab_total_submenuタグがあるからです。

私たちは、あなたが私たちがテーブルを得るのですか見ることができるコードを実行した場合:

In [2]: from bs4 import BeautifulSoup 

In [3]: import requests 

In [4]: params = {"cmp_cd":"005490"} 

In [5]: res = requests.get("http://companyinfo.stock.naver.com/v1/company/c1010001.aspx", params=params) 

In [6]: soup = BeautifulSoup(res.content, 'html.parser') 

In [7]: tag0 = soup.find('table', {'class':'gHead03'}) 

In [8]: print(tag0) 
<table class="gHead03" ............... 

漢字はスパムとしてフラグが付けられますが、それはすべてそこにあるなっているとして、私は完全な出力を投稿することはできません。

関連する問題