2013-04-15 44 views
0

看來,谷歌搜索將提供以下網址:通過HREF鑑於谷歌搜索網址是錯誤的

/url?q= "URL WOULD BE HERE" &sa=U&ei=9LFsUbPhN47qqAHSkoGoDQ&ved=0CCoQFjAA&usg=AFQjCNEZ_f4a9Lnb8v2_xH0GLQ_-H0fokw 

當受到由BeautifulSoup一個HTML解析。

我通過使用soup.findAll('a')然後使用['href']來獲取鏈接。

更具體地說,我使用的代碼如下:

import urllib2 
from BeautifulSoup import BeautifulSoup, SoupStrainer 
import re 

main_site = 'https://www.google.com/' 
search = 'search?q=' 
query = 'pillows' 
full_url = main_site+search+query 
request = urllib2.Request(full_url, headers={'User-Agent': 'Chrome/16.0.912.77'}) 
main_html = urllib2.urlopen(request).read() 

results = BeautifulSoup(main_html, parseOnlyThese=SoupStrainer('div', {'id': 'search'})) 
try: 
    for search_hit in results.findAll('li', {'class':'g'}): 
     for elm in search_hit.findAll('h3',{'class':'r'}): 
      for a in elm.findAll('a',{'href':re.compile('.+')}): 
       print a['href'] 

except TypeError: 
    pass 

而且,我注意到在該a['href']可能返回類似/dsoicjsdaoicjsdcj其中的鏈接將帶你到website.com/dsoicjsdaoicjsdcj其他網站。 我知道如果是這種情況,我可以簡單地將它們連接起來,但我覺得應該不是我應該改變我分析和處理基於我正在查看的網站的a['href']的方式。有沒有更好的方式來獲得此鏈接?我需要考慮一些JavaScript嗎?當然,在BeautifulSoup中有一個簡單的方法可以從a得到完整的HTML?

回答

0
SoupStrainer('div', {'class': "vsc"}) 

回報什麼原因,當你做:

print main_html 

並搜索 「VSC」,就是沒有結果