1

まず、私がやろうとしているのは、ユーザーに検索用語を尋ねることです。次に、プログラムは yahoo を検索し、最初の結果のリンクを出力します。ここに私がこれまで持っているコードがあります。

from urllib import urlopen

import re, time
from BeautifulSoup import BeautifulSoup


print "What Would You Like to Search For?"

user_input = raw_input('') #Gets Search Term from User



search = "http://search.yahoo.com/search;_ylt=A2KLtaJX_1BQfT4AwX2bvZx4?p=baker&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701" 

new_search = search.replace('baker', user_input)           
content = urlopen( new_search ).read()                       

soupcontent = BeautifulSoup(content)                    


link1 = soupcontent.find(id="link-1")            
print link1

すべて正常に動作します。ユーザー入力を受け取り、Yahoo を検索します。私が抱えている問題は、「犬」を検索したとしましょう

プログラムは次のように出力します: "a id="link-1" class="yschttl spt" href="http://www.dog.com/" data-bk="5101.1>b>Dog/b > 消耗品 | b>Dog/b> フード、b>Dog/b> ベッド、b>Dog/b> wbr>/wbr>ノミ駆除 & その他 .../a>"

ページの最初のリンクです。ただし、「http://www.dog.com/」のみを印刷したいのですが、これについて誰か助けてもらえますか?

ありがとう。

4

3 に答える 3

1

BeautifulSoup は実際にこれを非常に簡単にします。

>>> from bs4 import BeautifulSoup
>>> from urllib2 import urlopen
>>> 
>>> url = 'http://search.yahoo.com/search?p=dog'
>>> content = urlopen(url).read()
>>> soup = BeautifulSoup(content)
>>> 
>>> soup.find(id="link-1")
<a class="yschttl spt" data-bk="5097.1" href="http://www.dog.com/" id="link-1"><b>Dog</b> Supplies | <b>Dog</b> Food, <b>Dog</b> Beds, <b>Dog</b> <wbr></wbr>Flea Control &amp; More ...</a>
>>> soup.find(id="link-1").get("href")
'http://www.dog.com/'

UTF-8 を要求すると、おそらく次のように表示されます。

 u'http://www.dog.com/'

代わりに、Unicode バージョンも問題ありません。

標準的な警告: Yahoo! のエンドユーザー ライセンスが、あなたがやりたいことを何でも許可していることを必ず確認してください。

于 2012-09-13T01:01:01.773 に答える
1

正規表現を使用してみてください。http://docs.python.org/library/re.htmlを参照してください。

match = re.search(r'href="(http://.*?)"', str(link1))
print match.group(1)
于 2012-09-13T00:49:37.247 に答える
0

link = your_full_link_string.split('href="')[1].split('"')[0]

于 2012-09-13T00:50:13.597 に答える