Получить первый результат поиска из Google, используя Python - PullRequest
0 голосов
/ 05 сентября 2018

Я пытался получить первый результат поиска, используя приведенный ниже код. В некоторых случаях код работает нормально, но в некоторых случаях вывод, который он предоставляет, является неполным.

КОД:

import requests
from bs4 import BeautifulSoup

research_later = "ABCD filetype:pdf"
goog_search = "http://google.com/search?q=" + research_later


r = requests.get(goog_search)

soup = BeautifulSoup(r.text, "html.parser")
print(soup.find('cite').text)

Выход:

www.altogetherbetter.org.uk/.../5-assetbasedcommunitydevelopment.pdf

Фактический результат должен быть:

http://www.altogetherbetter.org.uk/Data/Sites/1/5-assetbasedcommunitydevelopment.pdf

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Ниже приведен код, который я использовал для решения моей проблемы. Я скачал файл, который был моей конечной целью после нахождения веб-ссылки.

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


    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(executable_path=r'C:\chromedriver_win32\chromedriver.exe', chrome_options=options)
    research_later = "ABCD filetype:pdf"

    driver.get("http://google.com/search?q="+research_later)
    elem=driver.find_element_by_css_selector("#rso > div > div > div:nth-child(1) > div > div > h3 > a").click()
0 голосов
/ 05 сентября 2018

Кажется, что тег cite не содержит всю ссылку. Возможно, вы захотите получить его из тега «а». Попробуйте это:

import re
regex = re.compile(r'https://(.)+')
elem = soup.find('a',attrs={'href':re.compile(r'/url?')})['href']
regex.search(elem).group()

Это даст вам ссылку, но вам может потребоваться отформатировать ее с помощью другого регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...