2012-04-28 2 views
1

Поиск Google дает мне первый результат на HTML:красивый суп извлечь HREF из поиска Google

<h3 class="r"><a href="http://rads.stackoverflow.com/amzn/click/0470284889" class="l vst" onmousedown="return rwt(this,'','','','1','AFQjCNEv1W9YC2jcSKYdEo2kNqBMJ-Utmg','k89K9hF4cVNpxQYHtEKiUQ','0CCoQFjAA',null,event)"><em>Quantitative Trading</em>: <em>How to Build Your Own Algorithmic</em> <b>...</b> - Amazon</a></h3> 

Я хотел бы, чтобы извлечь ссылку http://www.amazon.com/Quantitative-Trading-Build-Algorithmic-Business/dp/0470284889 от этого, но когда я использую прекрасный суп, чтобы извлечь информация, я получаю

soup.find("h3").find("a").get("href") 

я получить следующую строку вместо:

/url?q=http://www.amazon.com/Quantitative-Trading-Build-Algorithmic-Busines s/дп/0470284889 & са = U & е = P2ycT6OoNuasiAL2ncV5 & вед = 0CBIQFjAA & USG = AFQjCNEo_ujANAKnjheWDRlBKnJ1BGeA7A

Я знаю, что связь там, и я мог бы разобрать его, удалив/URL? д = и все после &, но мне было интересно, было ли более чистое решение.

Спасибо!

ответ

0

Вы можете использовать комбинацию urlparse.urlparse и urlparse.parse_qs, например

>>> import urlparse 
>>> url = '/url?q=http://www.amazon.com/Quantitative-Trading-Build-Algorithmic-Business/dp/0470284889&sa=U&ei=P2ycT6OoNuasiAL2ncV5&ved=0CBIQFjAA&usg=AFQjCNEo_ujANAKnjheWDRlBKnJ1BGe' 
>>> data = urlparse.parse_qs(
...  urlparse.urlparse(url).query 
...) 
>>> data 
{'ei': ['P2ycT6OoNuasiAL2ncV5'], 
'q': ['http://www.amazon.com/Quantitative-Trading-Build-Algorithmic-Business/dp/0470284889'], 
'sa': ['U'], 
'usg': ['AFQjCNEo_ujANAKnjheWDRlBKnJ1BGe'], 
'ved': ['0CBIQFjAA']} 
>>> data['q'][0] 
'http://www.amazon.com/Quantitative-Trading-Build-Algorithmic-Business/dp/0470284889' 
+0

спасибо, это то, что я искал! Просто интересно, почему BeautifulSoup() разрешает javascript в другом контенте, чем показывает мой веб-браузер? Означает ли это, что я должен использовать парсер html5lib для получения правильных результатов? – ejang

+0

@ejang: Извините, но я не знаю, как это делает BeautifulSoup :(вы можете опубликовать новый вопрос, если хотите, что это будет интересно :) – mouad

Смежные вопросы