【发布时间】:2019-11-08 17:01:03
【问题描述】:
我正在编写一个自动化代码来从网站上抓取独立的保险代理人姓名、地址和邮政编码。我似乎无法识别正确的 xpath 或编写正确的代码集来获取我想要打印的元素。我正处于流程的最开始阶段,我现在正努力打印出代理商名称,然后再转到代理商的地址和邮政编码。
我尝试使用 css 选择器和 xpath 来识别和打印数据。该网站运行在 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 文档。
(这是我要查找的 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>
谢谢!)
【问题讨论】:
标签: python selenium google-chrome web-scraping