Есть ли способ связать этот базовый URL-адрес со списком, я перепробовал буквально все возможное, но безрезультатно

#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, если вы хотите добавить все результаты, а не только последний.