(私は探してみましたが、他のすべての答えはurllib2を使用しているようです)
リクエストを使い始めたばかりですが、ページから何か追加のものを送信またはリクエストする方法がまだよくわかりません。たとえば、私は
import requests
r = requests.get('http://google.com')
しかし、たとえば、表示された検索バーを使用してグーグル検索を行う方法がわかりません。クイックスタートガイドを読みましたが、HTML POSTなどにあまり詳しくないので、あまり役に立ちませんでした。
私が求めていることを行うためのクリーンでエレガントな方法はありますか?
リクエストの概要
Google検索リクエストは標準のHTTP GETコマンドです。これには、クエリに関連するパラメータのコレクションが含まれています。これらのパラメータは、アンパサンド(&)文字で区切られた名前=値のペアとしてリクエストURLに含まれます。パラメータには、検索クエリなどのデータと、HTTP要求を行っているCSEを識別する一意のCSE ID(cx)が含まれます。ウェブ検索や画像検索サービスは、HTTPリクエストに応じて、XML結果を返します。
まず、 カスタム検索エンジンのコントロールパネル でCSE ID(cxパラメーター)を取得する必要があります
その後、 カスタム検索のための公式のGoogleデベロッパーサイトを参照してください。
このような多くの例があります:
http://www.google.com/search?
start=0
&num=10
&q=red+sox
&cr=countryCA
&lr=lang_fr
&client=google-csbe
&output=xml_no_dtd
&cx=00255077836266642015:u-scht7a-8i
そして、あなたが使用できるパラメータのリストが説明されています。
_import requests
from bs4 import BeautifulSoup
headers_Get = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
def google(q):
s = requests.Session()
q = '+'.join(q.split())
url = 'https://www.google.com/search?q=' + q + '&ie=utf-8&oe=utf-8'
r = s.get(url, headers=headers_Get)
soup = BeautifulSoup(r.text, "html.parser")
output = []
for searchWrapper in soup.find_all('h3', {'class':'r'}): #this line may change in future based on google's web page structure
url = searchWrapper.find('a')["href"]
text = searchWrapper.find('a').text.strip()
result = {'text': text, 'url': url}
output.append(result)
return output
_
Googleの結果の配列を{'text':text、 'url':url}形式で返します。上位の結果のURLはgoogle('search query')[0]['url']
になります
import requests
def googlesearch(searchfor):
link = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % searchfor
ua = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36'}
payload = {'q': searchfor}
response = requests.get(link, headers=ua, params=payload)
print response.text
googlesearch('test')
プリント:
{"responseData":{"results":[{"GsearchResultClass": "GwebSearch"、 "unescapedUrl": " http://www.speedtest.net/ "、 "url": "- http://www.speedtest.net/ "、" visibleUrl ":" www.speedtest.net "、" cacheUrl ":" http://www.google.com/search ?q \u003dcache:M47_v0xF3m8J:www.speedtest.net "、" title ":" Speedtest.net byOokla-グローバルブロードバンド速度\ u003cb\u003eTest\u003c/b\u003e "、" titleNoFormatting ":" Speedtest .net byOokla-グローバルブロードバンド速度テスト "、" content ":"\u003cb\u003eTest\u003c/b\u003eこの\ nインタラクティブブロードバンド速度\ u003cb\u003etest\u003c/bで世界中の場所へのインターネット接続帯域幅\ u003e fromOokla。 "}、
等.
入力:
import requests
def googleSearch(query):
with requests.session() as c:
url = 'https://www.google.co.in'
query = {'q': query}
urllink = requests.get(url, params=query)
print urllink.url
googleSearch('Linkin Park')
出力:
https://www.google.co.in/?q=Linkin+Park