Натыкаясь на эту странную проблему.Не совсем уверен, как ее решить!
Когда я добавляю
options = webdriver.ChromeOptions()
options.add_argument('headless')
в мой код, он игнорирует последующий цикл while.
Вот мой полный код, вверхдо конца скрипта: (с отредактированным URL)
import csv
from bs4 import BeautifulSoup
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome()
driver.get("SomeURL")
button = driver.find_element_by_id('show_more')
count = 1
while count > 0:
button.click()
count = count + 1
time.sleep(2)
if count == 50000:
break
soup = BeautifulSoup(driver.page_source, 'html.parser')
img_data = []
for img_tag in soup.find_all('img'):
data_dict = dict()
data_dict['image_name'] = img_tag['alt']
data_dict['image_url'] = img_tag['src']
img_data.append(data_dict)
with open('osprey.csv', 'w', newline='') as birddata:
fieldnames = ['image_name', 'image_url']
writer = csv.DictWriter(birddata, fieldnames=fieldnames)
writer.writeheader()
for data in img_data:
writer.writerow(data)
Приведенный выше код выполняется без заголовка, но возвращает только 30 результатов и записывает в CSV.(пока цикл не обрабатывается).Когда:
options = webdriver.ChromeOptions()
options.add_argument('headless')
удалено, а driver = webdriver.Chrome(options=options)
изменено на driver = webdriver.Chrome()
, процесс работает и возвращает более 10000 результатов и записывает в CSV, но не без заголовка и занимаетдолгое время для загрузки изображений страницы.
Я собираю миллионы изображений, поэтому мне действительно нужно, чтобы это было безголовым для эффективности.Любые советы о том, как держать его без головы, продолжая работать мой цикл, были бы фантастическими.
TIA!- Ура!