#python #list #selenium #web-scraping #selenium-chromedriver
Вопрос:
Я пытаюсь получить данные из нескольких URL-адресов, имеющих один и тот же базовый URL-адрес. Это мой код:
path = 'C:/ChromerDriver/chromedriver'
driver = webdriver.Chrome(executable_path=path, options=options)
link_list = ['/organization/4m-carbon-fiber', '/organization/aeropowder' ,'/organization/algiknit']
driver.implicitly_wait(10)
df = pd.DataFrame()
urls = driver.get('https://www.crunchbase.com'.join(link_list))
for url in urls:
try:
name = driver.find_element(By.XPATH, '//span[contains(@class, "profile-name")]').text
website = driver.find_element_by_xpath('//*[@class = "component--field-formatter layout-row layout-align-start-end link-accent ng-star-inserted"]').get_attribute('href')
logo = driver.find_element_by_xpath('/html/body/chrome/div/mat-sidenav-container/mat-sidenav-content/div/ng-component/entity-v2/page-layout/div/div/profile-header/div/header/div/div/div/div[1]/identifier-image/div/img').get_attribute('src')
except:
time.sleep(5)
df = df.append(pd.DataFrame({'name' : name,
'website' : website,
'logo' : logo},
index = [0]), ignore_index = True)
df.to_csv('raw_data.csv', index=False)
Как я должен правильно сочетаться link_list
с базовым URL-адресом?
Комментарии:
1. Я не понимаю, что вы подразумеваете под «объединением этих URL-адресов со списком». Что должно произойти, когда вы запустите код? Что же все-таки происходит и чем это отличается?
2. В частности, где вы
urls = driver.get('https://www.crunchbase.com'.join(link_list))
находитесь , как вы ожидаетеurls
выглядеть после этого?3. Да, именно так @KarlKnechtel
4. link_list = [‘/организация/4m-углеродное волокно’, ‘/организация/аэропорошок’ ,’/организация/алгикнит’] @KarlKnechtel
5. Ладно, тогда
driver.get
, очевидно, это не имеет к этому никакого отношения, верно? Этого не должно произойти, пока вы не окажетесь внутриfor url in urls
петли, верно? Имеет смысл? Так как вы хотите сделать что-то отдельное сdriver
for
каждым изurl
значений , то естьin urls
, да?
Ответ №1:
urls = ['https://www.crunchbase.com' elem for elem in link_list]
for url in urls:
try:
resp = driver.get(url)
...
Кроме того, поместите df.append() внутри цикла for, если вы хотите добавить все результаты, а не только последний.