Selenium在谷歌搜索,然后扫描页面,如果关键字存在

问题描述 投票:-1回答:1

1.我正在使用Selenium在谷歌搜索“圣人释放日期”。

2.如果结果中存在搜索词“发布日期”,我想扫描整个结果页面。

我正在重用我之前的项目中的搜索模式代码,但是那个使用了urllib。所以我不得不稍微调整搜索模式代码。但它没有做我想要的。我被卡住了。有人能指出我正确的方向吗?

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re

#   Version Alpha 3
#_______________________________________________________________________________

browser = webdriver.Chrome(executable_path=r"C:\Selenium_Drivers\chromedriver.exe")
browser.get('http://www.google.com')

input_element = browser.find_element_by_name('q')
input_element.send_keys('sage release dates')
# input_element.send_keys('Wolters Kluwer release dates')
input_element.submit()

'''
RESULTS_LOCATOR = '//div/h3/a'

WebDriverWait(browser, 10).until(
    EC.visibility_of_element_located((By.XPATH, RESULTS_LOCATOR)))

page1_results = browser.find_elements(By.XPATH, RESULTS_LOCATOR)
'''

page1_results = browser.find_elements_by_class_name('med')

for item in page1_results:
    print(item.text)

#..................................................

keywords = ['release date']

# sequence = page1_results.decode('utf-8', 'ignore')
sequence = page1_results

for k in keywords:
    pattern = '(?i)' + k
    keyword = re.search(pattern, str(sequence))
    if keyword:
        # print(keyword.group(0))
        print('k-1')
        print(k)
        print(keyword)
    else:
        print('k-2')
        print('-')
        print(k)
        print(keyword)




#..................................................
# browser.quit()
windows selenium anaconda python-3.6
1个回答
1
投票

您可以简单地创建一个智能xpath来查找搜索结果是否包含带有关键字('sage release dates')文本的元素。例如,检查整个结果页面是否具有以下文本之一或以下任何一个:

  • 结果元素与文本'sage'
  • 带有文本'sage release'的结果元素
  • 带有文本'发布日期'的结果元素

这样您就可以改善搜索。但是,如果您不想要其他过滤器,则修改xpath。

如果您想要具有文本'sage release dates'的结果,请使用xpath下面的内容:

//*[contains(text(), 'sage release dates')]

如果您想要仅包含文本“发布日期”的结果,请使用xpath下方:

//*[contains(text(), 'release dates')]

Python中的示例代码段:

from selenium import webdriver

driver.get('http://www.google.com')
elem = driver.find_element_by_name("q")
elem.send_keys("sage release dates")
elem.submit()

allResults = driver.find_elements_by_xpath("//*[contains(text(), 'sage release dates') or contains(text(), 'sage') or contains(text(), 'release') or contains(text(), 'sage release')]")
releaseDateResults = driver.find_elements_by_xpath("//*[contains(text(), 'release date')]")

print len(allResults)
print len(releaseDateResults)
driver.quit()
© www.soinside.com 2019 - 2024. All rights reserved.