如何使用Selenium抓取多个URL的内容?蟒蛇

时间:2019-07-08 02:57:57

标签: python loops selenium-webdriver xpath

None

enter image description here

我具有以上代码,可以使用Selenium-python提取href链接。我想提取每个人的个人资料“董事会成员”中的内容。我知道如何一个一个地提取它们,但是不知道如何编写一个循环来这样做。

这是我的代码:

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)

任何想法都值得赞赏!

2 个答案:

答案 0 :(得分:0)

这是应该起作用的方法。

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

答案 1 :(得分:0)

基本上,您只需将第二部分附加到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

奖金:以下是使用正则表达式(import re)从URL中提取人物姓名并将董事会成员资格表添加到词典中的方法。

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

这应该给您一个良好的开端。