2017-08-11 16 views
0

わかりましたので、私は現在、その後、HTMLのレスポンスを出力し、ウェブサイトへのPOSTリクエストを送信するよ、私はページ全体printにしたくない、いくつかのdiv括弧内だけで特定のコンテンツ..Pythonのurllib2の応答

コンテンツの

の例では、私はこれを行うだろうか、

<td align="right"> example </td> 

はので、私は唯一のTD括弧内の出力「例」にしたい出力にしたいですか?

+1

あなたはbeautifulsoupを調べることをお勧めします。 CSSなどで要素を選択できます。 –

+0

'BeautifulSoup'を試すことができます。 – stamaimer

答えて

0

私は、あなたがPython /プログラミングの一般的な話であることを前提としています。

requestsは、より使いやすいので、urllib2に組み込まれています。

要素の選択については、beautifulsoupは最も単純なライブラリの1つです。

の両方がインストールが簡単です:

  1. pip install requests

  2. pip install beautifulsoup4

コード:

import requests 
from bs4 import BeautifulSoup 
url = 'https://en.wikibooks.org/wiki/Unicode/List_of_useful_symbols' 
r = requests.get(url) 
soup = BeautifulSoup(r.text) 
tds = soup.findAll("td") # you can extract tags like <div> as well 
print(tds) 
td_texts = [td.text for td in tds] # in case you are interested in the text only 

出力:

[<td style="vertical-align:top">§</td>, <td> 00A7 section</td>, <td style="vertical-align:top">¶</td>, <td> 00B6 paragraph</td>, <td style="vertical-align:top">·</td>, 
+0

ありがとうございます:)私が欲しかったのと同じように働きました。 –

+0

@jakereadingようこそ。 Stackoverflowへようこそ! –

1

HTMLParserはこのタスク用に設計されています。 HTMLレスポンス・ページ全体にフィードすることができます。次に、タグ(タグが属性 "right"を持つtdタグであることを確認する)のエントリのメソッド(サブクラスでオーバーライドする)を呼び出し、データの別のメソッド文字列「例」とは、データのメソッドで何をやって停止するために使用することができます終了タグ(のための別の方法

私はHTMLParserを愛し、それをチェックアウト

スケッチの例を追加して編集:。。。

class MyParser(HTMLParser): 
# Looking for <td class="example"> 
#    data here 
#    </td> 

    def __init__(self): 
     super(MyParser, self).__init__() 
     self.in_td = False 
     self.data = '' 

    def handle_starttag(self, tag, attrs): 
     if tag != 'td': 
      return 
     d = dict(attrs) 
     if 'class' in d and d['class'] == 'example': 
      self.in_td = True 

    def handle_endtag(self, tag): 
     if tag=='td' and self.in_td: 
      self.in_td = False 
      print("Found this data: {}".format(self.data)) 

    def handle_data(self, data): 
     if self.in_td: 
      self.data += data