Здравствуйте, 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")
|
| | |
Вот такой код:
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(). Как это сделать?
За наводку спасибо, но именно DeepSeek мне там какого только говна не накидывал при формировании кода вызова selenium )