2

イブニングの人々、

Google に質問して、関連するすべてのリンクを Google の信頼できる検索クエリから取得しようとしています (つまり、「site: Wikipedia.com Thomas Jefferson」を検索すると、wiki.com/jeff、wiki.com/tom、等。)

これが私のコードです:

from bs4 import BeautifulSoup
from urllib2 import urlopen

query = 'Thomas Jefferson'

query.replace (" ", "+")
#replaces whitespace with a plus sign for Google compatibility purposes

soup = BeautifulSoup(urlopen("https://www.google.com/?gws_rd=ssl#q=site:wikipedia.com+" + query), "html.parser")
#creates soup and opens URL for Google. Begins search with site:wikipedia.com so only wikipedia
#links show up. Uses html parser.

for item in soup.find_all('h3', attrs={'class' : 'r'}):
    print item.string
#Guides BS to h3 class "r" where green Wikipedia URLs are located, then prints URLs
#Limiter code to only pull top 5 results

ここでの目標は、クエリ変数を設定し、Python で Google にクエリを実行して、必要に応じて Beautiful Soup がすべての「緑色」のリンクを取得することです。

これはGoogleの結果ページの写真です

緑色のリンクを完全に引き出したいだけです。奇妙なのは、Google のソース コードが「隠されている」ことです (検索アーキテクチャの兆候です)。そのため、Beautiful Soup は、h3 タグから href を取得することはできません。要素を検査すると h3 href が表示されますが、ソースを表示すると表示されません。

これは検査要素の写真です

私の質問は次のとおりです: ソースコードにアクセスできず、Inspect Element のみにアクセスできない場合、BeautifulSoup を介して Google から最も関連性の高い上位 5 つの緑色のリンクを取得するにはどうすればよいですか?

PS: 私が何を達成しようとしているのかを理解するために、私のような 2 つの比較的近いスタック オーバーフローの質問を見つけました。

美しいスープ Google検索からhrefを抽出

Pythonを使って綺麗なスープでGoogle検索のデータを集める方法

4

3 に答える 3

0

#q=site:wikipedia.comこれは、結果を完全に解析可能な HTML で提供するのではなく、AJAX を介してデータをロードするため、(あなたが持っているような) ハッシュ検索では機能しません。代わりにこれを使用する必要があります。

soup = BeautifulSoup(urlopen("https://www.google.com/search?gbv=1&q=site:wikipedia.com+" + query), "html.parser")

参考までに、JavaScript を無効にして Google 検索を実行し、この URL 構造を取得しました。

于 2016-02-23T23:04:03.457 に答える