Я пишу код автоматизации для очистки имен, адресов и почтовых индексов независимых страховых агентов с веб-сайта.Я не могу определить правильный xpath или написать правильный набор кода, чтобы получить элементы, которые я хочу напечатать.Я в самом начале процесса, и я просто работаю, чтобы распечатать названия агентств прямо сейчас, прежде чем перейти к адресам и почтовым индексам агентов.
Я попытался определить и распечатать данные, используя селекторы css и xpaths.Веб-сайт работает на Javascript, поэтому, когда я попытался написать код на Anaconda и использовать Scrapy, пауки только просмотрели html страницы загрузки, а не список агентов, которые появились после, поэтому я перешел на использование Selenium с PyCharm.Я пытался набрать xpath множеством разных способов, но я получаю в основном те же результаты или те же сообщения об ошибках.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchAttributeException
from selenium.webdriver.remote.webelement import WebElement
# My Chrome webdriver
driver = webdriver.Chrome(executable_path="C:/Users/Owner/Desktop/chromedriver.exe")
# The website I'm scraping is here
url = "https://insurance-agent.safeco.com/find-an-insurance-
agency/app/search-results-locationSearch=Chicago,%2520IL"
driver.get(url)
# The wait so the results page gets scraped and not the loading page
driver.implicitly_wait(30)
# Identifying the xpath of the agent name
Agency_Name = driver.find_elements_by_xpath('//[@id="srpgLftAgencyName"]')
print(Agency_Name)
Я получаю результаты с огромным списком из них:
[<selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-1")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-2")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-3")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-4")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-5")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-6")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-7")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-8")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-9")>, <selenium.webdriver.remote.webelement.WebElement (session="38691bf8d9c3c1c0ec8d3455899cb06f", element="0.2587047071773503-10")>]
То, что я пытаюсь получить, - это просто простой текст названий агентства, чтобы я мог экспортировать его вExcel DOC.
(Вот точный элемент в HTML, который я собираюсь:
<a id="srpgLftAgencyName" class="agencyTitle ng-binding" ng-
show="x.agencyPrimaryName != ' '" ng-href="/find-an-insurance-
agency/app/agency/2428293524282935" href="/find-an-insurance-
agency/app/agency/2428293524282935">
PJ NUNZIO AND ASSOCIATES, INC.
</a>
Спасибо!)