Я подготавливаю скрипт для веб-слома, который должен найти список адвокатов в области через веб-сайт бизнес-каталога. Я использую драйвер chrome для заполнения ключевых слов и значений области.Как получить доступ к грандиозным дочерним узлам с помощью XPath в Python Selenium?
Поскольку некоторые из хитов не имеют номера телефонов, я хотел бы перебирать список DIV, соответствующих результатам поиска, а затем проверить, имеет ли он номер телефона в качестве великого ребенка, и если да, то я получаю номер телефона, иначе я оставлю это поле пустым.
У меня есть два способа сделать это, как показано ниже.
import time
import json as js
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
url = 'http://www.yellowpages.com/search?search_terms=Divorce+Attorneys&geo_location_terms=sun+diego'
RsultsList = []
driver = webdriver.Chrome()
driver.get(url)
ThereIsNext = True
while ThereIsNext:
# find ads.
nAddResults = len(driver.find_elements_by_xpath("//div[@class='result flash-ad']"))
#print 'add size = %d' % nAddResults
for i in range(nAddResults):
phone1 = driver.find_elements_by_xpath("//div[@class='result flash-ad']/div[1]/div[1]/div[2]/div[1]/ul[1]/li[1]")[i].text
BusinessName1 = driver.find_elements_by_xpath("//div[@class='result flash-ad']//a[@class='business-name']")[i].text
elem = driver.find_elements_by_xpath("//div[@class='result flash-ad']")
phone2 = elem.find_element_by_xpath("/div[1]/div[1]/div[2]/div[1]/ul[1]/li[1]")[i].text
BusinessName2 = elem.find_element_by_xpath("//a[@class='business-name']")
Первый из них подвержен ошибкам в качестве записей без номера телефона. НЕОБХОДИМО показать в конце. Поэтому я придумал второй путь. Тем не менее, я получаю следующее сообщение об ошибке, если попробуйте второе.
Traceback (most recent call last):
File "C:\Users\XXXX\documents\visual studio 2015\Projects\PythonApplication3\
PythonApplication3\AtorneyList.py", line 23, in <module>
phone2 = elem.find_element_by_xpath("/div[1]/div[1]/div[2]/div[1]/ul[1]/li[1
]").text
AttributeError: 'list' object has no attribute 'find_element_by_xpath'
Press any key to continue . . .
Пожалуйста, дайте мне знать, что мне не хватает. Я проверил this и that уже и не мог понять.
Очень ценю это.
Благодаря
Ваших XPaths выглядят очень хрупкими, не существует никаких классов или идентификаторы, которые вы можете использовать для поиска элементов? –