Как использовать Selenium для удаления содержимого нескольких URL?питон - PullRequest
1 голос
/ 08 июля 2019
driver = webdriver.Chrome(r'XXXX\chromedriver.exe')
FB_bloomberg_URL="https://www.bloomberg.com/quote/FB:US"
driver.get(FB_bloomberg_URL)

eList = driver.find_elements_by_class_name('link__f5415c25')
hrefList = []
for e in eList:
    hrefList.append(e.get_attribute('href'))

for href in hrefList:
    print(href)

enter image description here

У меня есть приведенная выше кодировка для извлечения ссылок href с использованием Selenium - python. Я хочу извлечь содержание в профиле каждого человека "Членство в Совете" Я знаю, как извлечь их один за другим, но не знаю, как написать цикл для этого.

Вот мой код:

driver2 = webdriver.Chrome(r'XXXX\chromedriver.exe')
driver2.get("https://www.bloomberg.com/profiles/people/15103277-mark-elliot-zuckerberg")

boardmembership_table=driver2.find_elements_by_xpath('//*[@id="root"]/div/section/div[5]')[0]
boardmembership_table.text

Любые мысли приветствуются!

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вы просто прикрепляете вторую часть к первой под циклом for:

import sys
from selenium import webdriver
driver = webdriver.Firefox()

FB_bloomberg_URL="https://www.bloomberg.com/quote/FB:US"
driver.get(FB_bloomberg_URL)

eList = driver.find_elements_by_class_name('link__f5415c25')
hrefList = []
for e in eList:
    hrefList.append(e.get_attribute('href'))

for href in hrefList:
    --print(href)
    driver.get(href)    
    boardmembership_table=driver.find_elements_by_xpath('//*[@id="root"]/div/section/div[5]')[0]
    boardmembership_table.text

Бонус : А вот как извлечь имена людей из URL с помощью регулярных выражений (import re) и добавить таблицу членства в форуме в словарь.

result_dict = {}
regex = r"\/people\/\d+-(.*)$"
for href in hrefList:
    driver.get(href)    
    boardmembership_table=driver.find_elements_by_xpath('//*[@id="root"]/div/section/div[5]')[0]    
    matches = re.finditer(regex, href, re.MULTILINE)
    for matchNum, match in enumerate(matches, start=1):        
        result_dict[match.group(1)] = boardmembership_table.text

Это должно дать вам преимущество.

0 голосов
/ 08 июля 2019

Вот подход, который должен работать.

driver = webdriver.Chrome(r'XXXX\chromedriver.exe')
FB_bloomberg_URL="https://www.bloomberg.com/quote/FB:US"
driver.get(FB_bloomberg_URL)

eList = driver.find_elements_by_class_name('link__f5415c25')
hrefList = []
for e in eList:
    hrefList.append(e.get_attribute('href'))

for href in hrefList:
    print(href)
    # iterating through all the board members here #<== changed below
    driver.get(href)
    # you can add WebDriver wait for the below item to be displayed 
    # so that the script will wait until page loaded successfully with this element
    boardmembership_table=driver.find_elements_by_xpath('//*[@id="root"]/div/section/div[5]')[0]
    boardmembership_table.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...