Вот такой код:
driver = webdriver.Chrome(
service=Service(ChromeDriverManager(driver_version="116.0.5845.141").install(), options=options))
driver.get("https://www.linkedin.com/jobs/search/?currentJobId=3656983339&f_LF=f_AL&geoId=102257491&keywords=python%20developer&origin=JOB_SEARCH_PAGE_SEARCH_BUTTON&refresh=true")
all_listings = driver.find_elements(By.CSS_SELECTOR ,".job-card-container--clickable")
В результате, в all_listings я получаю пустой обьект, при том, что в хроме в DevTools вполне себе находится по селектору элемет с ".job-card-container--clickable".
Поэтому хочу увидеть что там selenium скачал на вызове driver.get(). Как это сделать?
Здравствуйте, senglory, Вы писали:
S>В результате, в all_listings я получаю пустой обьект, при том, что в хроме в DevTools вполне себе находится по селектору элемет с ".job-card-container--clickable".
S>Поэтому хочу увидеть что там selenium скачал на вызове driver.get(). Как это сделать?
| | Просто позвони Солу |
| | Вот несколько способов посмотреть, что Selenium скачал:
**1. Самый простой — вывести исходный код страницы:**
```python
print(driver.page_source)
```
**2. Сохранить в файл (удобнее для больших страниц):**
```python
with open("page.html", "w", encoding="utf-8") as f:
f.write(driver.page_source)
```
Потом откроешь `page.html` в браузере или редакторе.
**3. Проверить, полностью ли загрузилась страница:**
Вероятно, проблема в том, что Selenium загружает страницу, но JavaScript не успевает отрендерить элементы. Добавь ожидание:
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://www.linkedin.com/jobs/search/?...")
# Жди, пока элементы появятся (максимум 10 секунд)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".job-card-container--clickable")))
all_listings = driver.find_elements(By.CSS_SELECTOR, ".job-card-container--clickable")
```
**4. Проверить, нет ли ошибок сети или редиректа:**
```python
driver.get("...")
print(driver.current_url) # Проверь, на какой URL перенаправилась страница
print(driver.title) # И заголовок страницы
```
Скорее всего, дело именно в том, что `driver.get()` возвращает страницу до полной загрузки JavaScript. LinkedIn динамически загружает элементы, поэтому нужно добавить явное ожидание элементов перед их поиском.
|
| | |
Проблемы по сути две:
— когда ты видишь .job-card-container--clickable ты залогинен, проверь под private, его там нет
— ты не ждешь элементов (они подгружаются динамически)
Вообще даешь задание ИИ, он тебе напишет нормальный скрипт за 5 секунда, не надо мучаться
| | вот |
| | driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
# Load LinkedIn jobs page
url = "https://www.linkedin.com/jobs/search/?keywords=python%20developer&location=London"
driver.get(url)
# Wait for job listings to load (more robust than sleep)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".job-search-card")))
# Get all job listings
all_listings = driver.find_elements(By.CSS_SELECTOR, ".job-search-card")
print(f"Found {len(all_listings)} jobs\n")
|
| | |
За наводку спасибо, но именно DeepSeek мне там какого только говна не накидывал при формировании кода вызова selenium )