特定の Web サイトのすべての ID の値を表示する必要があります。urllib
またはurllib2
、サイトを読み取ってから「id =」の後に値だけを出力できる関数はありますか? これについての助けは大歓迎です。
質問する
67 次
3 に答える
2
BeautifulSoup と requests を使用してこれを行います。このページを使用して簡単な例をまとめ、 Githubに投稿しました。
ここでの実際の作業は return ステートメントにあることに注意してください。このほとんどはボイラープレートです。
from bs4 import BeautifulSoup as BS
import requests as r
def get_ids_from_page(page):
response = r.get(page)
soup = BS(response.content).body
return sorted([x.get('id') for x in soup.find_all() if x.get('id') is not None])
if __name__ == '__main__':
# In response to the question at the URL below - in short "How do I get the
# ids from all objects on a page in Python?"
ids = get_ids_from_page('http://stackoverflow.com/questions/14347086/')
for val in ids:
print val
于 2013-01-15T22:00:26.753 に答える
0
urllibまたはurllib2を使用してページを取得する、またはより便利なrequests ライブラリを使用してから正規表現を適用する、明白な (しかし醜い)正規表現ソリューションがありますが、 pyqueryパッケージをお勧めします。これはjqueryに似ていますが、python の場合、css セレクターを使用してノードを取得します。
あなたの問題のために:
from pyquery import PyQuery
page = """
<html>
<body id='test'>
<p id='test2'>some text</p>
</body>
</html>
"""
doc = PyQuery(page)
for node in doc("*[id]").items():
print(node.attr.id)
生成されます:
test
test2
そして、ページをダウンロードするには:
import requests
page = requests.get("http://www.google.fr").text
また、またはを使用して url を開くことpyquery
もできます。urllib
requests
于 2013-01-15T21:51:42.403 に答える
0
正規表現を使用できます:
import re
id_list = re.findall('id="(.*?)"', html_text)
またはもう少し複雑です (HTML タグからのみ解析していることを確認するため):
id_list = re.findall('<[^>]*? id="(.*?)"', html_text)
このようにして、特定のタイプの ID のみを解析するのは簡単です (いくつかの特別なパターンに一致します)。
于 2013-01-15T22:32:35.393 に答える