私は美しいスープを使用して非常に簡単な交換をしたいと思います。たとえば、ページ内のすべてのAタグを参照し、hrefに "?foo"を追加したいとします。誰かがそのような単純なことをする方法の例を掲示したりリンクしたりすることはできますか?「こんにちは世界」のシンプルな美味しいスープの例はどこにありますか?
印刷し
7
A
答えて
14
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup('''
<html>
<head><title>Testing</title></head>
<body>
<a href="http://foo.com/">foo</a>
<a href="http://bar.com/bar">Bar</a>
</body>
</html>''')
for link in soup.findAll('a'): # find all links
link['href'] = link['href'] + '?foo'
print soup
:
<html>
<head><title>Testing</title></head>
<body>
<a href="http://foo.com/?foo">foo</a>
<a href="http://bar.com/bar?foo">Bar</a>
</body>
</html>
をdocumentationはまた、いくつかexamples for changing attributesを持っています。これは、BeautifulSoupのすべての一般的な側面をカバーする広範なチュートリアルです。私はドキュメンテーションから何が欠けているのか分からず、多分あなたは明確にするべきです。
1
私の例:
HEADERS = {"User-Agent" : "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5",
"Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language" : "ru,en-us;q=0.7,en;q=0.3",
"Accept-Charset" : "windows-1251,utf-8;q=0.7,*;q=0.7",
"Accept-Encoding" : "identity, *;q=0",
"Connection" : "Keep-Alive"}
PROXY=None
timeout=60
def parse_manuf_page_about(page_str_about):
slovar={}
global timeout
socket.setdefaulttimeout(timeout)
if PROXY is not None:
proxy_handler = urllib2.ProxyHandler({ "http": "http://"+PROXY+"/" })
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
page_request = urllib2.Request(url=page_str_about, headers=HEADERS)
try:
#print "Page reading ... %s" %page_str
page_zapr = urllib2.urlopen(url=page_request)
page=page_zapr.read()
except Exception ,error:
print str(error)
res=False
return res,slovar
soup = BeautifulSoup(page)
select_pod=soup.findAll('div', {"class":"win aboutUs"})
promeg= select_pod[0].findAll("p")[0]
zerro_br= promeg.findAll(text=True)
Company_Info=" ".join(zerro_br).strip(" \t\n")
select =soup.findAll('div', {"class":"win"})
cells_tabl= select[0].findAll("tr")
for yach in cells_tabl:
text_zag=yach.findAll("th")
for zn_yach in text_zag:
if len(zn_yach)>0:
txt_zn_yach="".join(zn_yach.findAll(text=True)).strip(" \t\n")
else:
txt_zn_yach= zn_yach.contents[0].strip(" \t\n")
#print txt_zn_yach
text_znach_td=yach.findAll("td")
for zn_yach_td in text_znach_td:
if len(zn_yach_td)>0:
txt_zn_yach_td="".join(zn_yach_td.findAll(text=True)).strip(" \t\n")
else:
txt_zn_yach_td= zn_yach.contents[0].strip(" \t\n")
#print txt_zn_yach_td
# Делаем замены неугодных символов/Replase browsers char
if " " in txt_zn_yach_td:
while txt_zn_yach_td.find("nbsp;")>0:
pos_gavna=txt_zn_yach_td.find(" ")
txt_zn_yach_td=txt_zn_yach_td[:pos_gavna]+txt_zn_yach_td[pos_gavna+6:]
if """ in txt_zn_yach_td:
while txt_zn_yach_td.find("quot;")>0:
pos_gavna=txt_zn_yach_td.find(""")
txt_zn_yach_td=txt_zn_yach_td[:pos_gavna]+'"'+txt_zn_yach_td[pos_gavna+6:]
if "&" in txt_zn_yach_td:
while txt_zn_yach_td.find("&")>0:
pos_gavna=txt_zn_yach_td.find("&")
txt_zn_yach_td=txt_zn_yach_td[:pos_gavna]+'&'+txt_zn_yach_td[pos_gavna+6:]
slovar[str(txt_zn_yach)]=txt_zn_yach_td
slovar["Company_Info"]=Company_Info
# разбираем нижнюю таблицу с контактом и вытаскиваем оттуда имя контакта | get name contacts
select_contact=soup.findAll('a', {"class":"member-name"})
for contact_person in select_contact:
slovar["Contact_Person"]= contact_person.contents[0]
# получаем статус голд партнера по наличию таблички в левом верхнем углу | get Gold status
select_gold_part=soup.findAll('a', {"class":"memberLogo"})
if len(select_gold_part)==0:
slovar["Gold member"]="N"
else:
slovar["Gold member"]="Y"
res=True
return res,slovar
このコードは、Alibaba.com上manufacturyの1ページを解析します。あなたはそれを見ることができますページ - http://xmxinhuafeng.en.alibaba.com/aboutus.html
関連する問題
- 1. こんにちは世界の問題?
- 2. こんにちはFBJSの世界
- 3. こんにちは、世界! Brainfuckで
- 4. knockoutjsこんにちは世界が
- 5. tensorflow.string_input_producer「こんにちは世界
- 6. こんにちは、ライブラリを使用していない世界
- 7. FFMpegこんにちは世界は失敗しました
- 8. 美味しいスープ内にlxmlが見つかりません
- 9. 基本的なプラグイン(NPAPI /のNPRuntime)こんにちは、世界
- 10. 美味しいスープのスピードアップ
- 11. こんにちは世界はうまくいきませんか?
- 12. なぜこのシンプルな世界コードはセグメンテーションですか?
- 13. Eclipse上のアンドロイドはこんにちは世界を実行しません
- 14. 複雑な美味しいスープのクエリ
- 15. 私は同じ行にこんにちはの世界を追加したい
- 16. netbeans javafxこんにちは世界のサンプル
- 17. こんにちは、世界はでは動作しませんが、[更新:]
- 18. 世界の状態ストアは物理的にどこにありますか
- 19. nginx cモジュールこんにちは世界は動作しません
- 20. ハッシュ#は、私は、ルートパラメータとして「こんにちは、世界の#の世界」を渡そうとしますが、出力として引数の値としてのみ「こんにちは、世界」を取得していますスリムフレームワークAPI
- 21. こんにちは世界のようなパスに沿ったノードの軌跡
- 22. こんにちは、世界。音声認識
- 23. 美味しいスープでこする問題
- 24. Loopで美味しいスープのdivを繰り返します
- 25. <span>から美味しいスープ
- 26. 美味しいスープのリンクを取得
- 27. 美味しいスープを使って.htmlにスープを出力するには?
- 28. なぜglibのために「こんにちはの世界」を構築できないのですか?
- 29. 美しいスープ - 'ResultSet'オブジェクトに属性 'text'がありません
- 30. .NETの世界にはどのようなOSソフトウェアがありませんか?
キープアライブは実際に動作しますか? –