До
После (адреса добавлены)
У меня есть таблица с названиями мест, и я хотел бы добавить адреса этих мест в следующую ячейку, используя формулу в Google Sheets. Я хотел бы сделать это, используя формулу для поиска результатов в Google, потому что я хочу также очистить многие другие значения и быстро изменить лист на своем телефоне по мере изменения моих потребностей. Таким образом, я хотел бы сделать это без использования какого-либо внешнего языка кодирования и даже без сценариев приложений Google, если я могу этого избежать.
Я нашел некоторую информацию о том, как сделать что-то подобное с формулой Excel здесь:
Использование Google Sheets в качестве базового парсера
На этом сайте показано, как выполнить поиск в Google по имени автора статьи с помощью формулы Excel в следующем формате:
=INDEX(IMPORTXML(A1,"//span[@itemprop='name']"),1)
Можете ли вы помочь мне изменить это, чтобы вернуть результат поиска Google в ячейку Excel?






Функция индекса, вероятно, могла бы быть удалена кем-то, кто лучше разбирается в XPath, но, тем не менее, нижеприведенное, кажется, работает надежно. Следующее будет вставлено в B2 вашего образца листа:
=index(IMPORTXML("http://www.google.com/search?&q = "&"Address+of+"&A2&"+in+british+columbia"&"&oq = "&"Address+of+"&A2&"+in+british+columbia","//span"), 15, 1)
Это основано на предположении, что все площадки расположены в Британской Колумбии. Вы можете параметризовать раздел поиска Google, чтобы добавить более широкий набор возможных местоположений поиска.
Недавно у меня была довольно похожая задача, и хотя я не смог применить ее в таблицах Google — потому что Google очень неохотно передает данные парсерам — я добился некоторого успеха с python. Мне пришлось применить заголовок, чтобы обманом заставить Google предоставить нам обычные данные страницы, чтобы мы могли получить универсальное описание класса «sXLaOe» для запросов, касающихся адресов. Кроме того, я уже сделал поисковые запросы в Excel, добавив вместе два разных столбца («Доктор» + имя + город + «адрес»), чтобы Google выдал нам «избранный фрагмент», который мы могли украсть.
Это немного медленно, поэтому я уверен, что кто-то мог бы сделать это немного быстрее, и это требует, чтобы вы заранее нашли описание класса, но это единственное решение, которое я мог заставить работать для меня. Кроме того, иногда вы не получаете предложенный адрес, и вы не хотите, чтобы вас выбросили из цикла for, отсюда и условие «попробовать».
import requests
from bs4 import BeautifulSoup
import pyexcel as pe
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'}
doctorNames = pe.get_array(file_name='../location_here.xlsx')
for i in doctorNames:
try:
url = 'https://google.com/search?q=' + str(i)
request_result=requests.get(url, headers=headers)
soup = BeautifulSoup(request_result.text,"lxml")
mydivs = soup.find("div", {"class": "sXLaOe"}).get_text()
print(mydivs)
except:
print("N/A")
Кроме того, само собой разумеется, что вам нужно будет захватить модули pyexcel и BeautifulSoup, чтобы запустить этот.