Google 검색을 수행하려면 google 또는 Google-Search-API과 같은 많은 모듈이 있습니다. 그러나 많은 검색을 수행하고 많은 요청을 보내려면 Google이 사용자를 차단하고 오류 503이 발생합니다. 다른 API를 사용하기 전에 Bing 및 Yahoo와 같은 옵션을 사용할 수 있지만 그 중 어느 것도 더 이상 무료가 아닙니다. 인터넷 검색을 수행하는 무료 API는 FAROO API입니다. 그러나 selenium webdriver을 사용하여 Google 검색을 수행하는 옵션은 여전히 있습니다. Selenium은 브라우저 사용을 모방하는 데 사용되며 Firefox, Chrome, Edge 또는 Safari webdrivers (실제로 Chrome을 열고 검색)를 사용하려면 options이 있지만 실제로 브라우저를보고 싶지 않기 때문에 성가시다. 하지만 이것을 해결할 수있는 방법은 PhantomJS입니다. here에서 다운로드하십시오. 추출한 다음 아래 예제에서 사용 방법을 살펴 봅니다. 사용할 수있는 간단한 클래스를 작성 했으므로 Path를 PhantomJS로 변경하면됩니다.
import time
from urllib.parse import quote_plus
from selenium import webdriver
class Browser:
def __init__(self, path, initiate=True, implicit_wait_time = 10, explicit_wait_time = 2):
self.path = path
self.implicit_wait_time = implicit_wait_time # http://www.aptuz.com/blog/selenium-implicit-vs-explicit-waits/
self.explicit_wait_time = explicit_wait_time # http://www.aptuz.com/blog/selenium-implicit-vs-explicit-waits/
if initiate:
self.start()
return
def start(self):
self.driver = webdriver.PhantomJS(path)
self.driver.implicitly_wait(self.implicit_wait_time)
return
def end(self):
self.driver.quit()
return
def go_to_url(self, url, wait_time = None):
if wait_time is None:
wait_time = self.explicit_wait_time
self.driver.get(url)
print('[*] Fetching results from: {}'.format(url))
time.sleep(wait_time)
return
def get_search_url(self, query, page_num=0, per_page=10, lang='en'):
query = quote_plus(query)
url = 'https://www.google.hr/search?q={}&num={}&start={}&nl={}'.format(query, per_page, page_num*per_page, lang)
return url
def scrape(self):
#xpath migth change in future
links = self.driver.find_elements_by_xpath("//h3[@class='r']/a[@href]") # searches for all links insede h3 tags with class "r"
results = []
for link in links:
d = {'url': link.get_attribute('href'),
'title': link.text}
results.append(d)
return results
def search(self, query, page_num=0, per_page=10, lang='en', wait_time = None):
if wait_time is None:
wait_time = self.explicit_wait_time
url = self.get_search_url(query, page_num, per_page, lang)
self.go_to_url(url, wait_time)
results = self.scrape()
return results
path = '<YOUR PATH TO PHANTOMJS>/phantomjs-2.1.1-windows/bin/phantomjs.exe' ## SET YOU PATH TO phantomjs
br = Browser(path)
results = br.search('Python')
for r in results:
print(r)
br.end()