У меня есть список строк, которые я хочу перебрать в цикле.Однако я не уверен, как создать цикл for для этой задачи.Функция извлекает информацию с веб-сайта.Таблицы имеют десятки тысяч строк в зависимости от «имени».Как я могу это сделать?
У меня есть список:
list = ['name1', 'name2', 'name3']
Вот мой код:
import selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import selenium.webdriver as webdriver
import pandas as pd
import time
from bs4 import BeautifulSoup
def get_results(search_term):
global df
url = "https://investor.dn.no/#!/NorgesAksjer/"
browser = webdriver.Chrome("C:/Users/Downloads/chromedriver.exe"))
browser.get(url)
search_box = browser.find_element_by_id("ar-search-input")
search_box.send_keys(search_term)
browser.find_element_by_css_selector(".btn.btn-lg.btn-primary").click()
WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, search_term))).click()
WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.XPATH,
"//*[@id='dninvestor-content']/div[1]/div/div[1]/div[2]/div[2]/div[1]/div[3]/div/div[2]/div/div[1]/a"))).click() #
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,
"//*[@id='dninvestor-content']/div[1]/div/div[1]/div[2]/div[2]/div[1]/div[3]/div/div[2]/div/table/tbody/tr[101]/td[1]/a"))).click()
time.sleep(5)
result = []
html = browser.page_source
soup = BeautifulSoup(html, 'html.parser')
for posts in soup.findAll('div',{'class':'col-xs-12 ng-scope'}):
for tr in posts.findAll('tr')[1:]:
sh = [td for td in tr.stripped_strings]
result.append(list(sh))
df = pd.DataFrame(result)
return result
Я хочу создать цикл for такой, что get_results(list)
будет:
get_results('name1')
get_results('name2')
get_results('name3')
и результаты будут добавлены к df