Я хочу извлечь номера телефонов с этой страницы, на которой есть событие onclick, используя селен на python - PullRequest
0 голосов
/ 04 августа 2020

код html представлен на картинке.

Я пробовал следующую попытку:

content = soup.find_all('div', {"class": ["listing_category_business company_profile", "listing_category_business free_listing"]})

для компании в содержании:

phoneIcon = driver.find_element_by_xpath\
            ("/html/body/div/div[3]/div[2]/div[2]/div/div[4]/table/tbody/tr[7]/td/div/div/table/tbody/tr[2]/td[2]/table/tbody/tr[2]/td/table/tbody/tr[5]/td[3]/span").get_attribute("dcl_val.tel")

возвращаемый результат:

На этой странице можно извлечь 10 разных чисел, все с разными идентификаторами, поэтому я не могу использовать это для использования find_element_by_xpath(). Есть ли решения для следующей проблемы? Приносим извинения, если решение легко решить, поскольку я только вчера начал использовать Selenium и все еще разбираюсь в этом.

Страница html: https://www.streetdirectory.com/businessfinder/company/505/Cleaning_Services/All/2/

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте приведенный ниже код, замените i числами вроде (1,2 ... n), чтобы получить первый, второй, третий .... n-е номера телефонов

phoneIcon = driver.find_element_by_xpath("(//td[text()='Tel'])[" + i + "]/following::td[contains(@class,'Link')][1]//span").get_attribute("dcl_val.tel")

Я не знаком с python селен, иначе я бы отдал за l oop logi c, чтобы перебрать все номера телефонов и получить их.

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