Результаты веб-скрининга с сайта действительно.com
-Поиск 'Junior Python' в 'Лос-Анджелес, Калифорния' (Готово)
-Не открывается всплывающее окно.Закройте всплывающее окно, если появится всплывающее окно. (Готово)
-Top 3 результаты спонсируются, поэтому пропустите их и переходите к реальным результатам
-Нажмите на раздел сводки результатов, который открывает боковую панель с полной сводкой
-Очистить полную сводку
-При щелчке по итоговой сводке URL-адрес изменяется.Вместо того, чтобы открывать новое окно, я хотел бы почистить боковую панель полной сводкой
- каждый реальный результат находится под ('div':{'data-tn-component':'organicJob'})
.Я могу получить название, компанию и краткое резюме, используя BeautifulSoup.Тем не менее, я хотел бы получить полную сводку на боковой панели.
Проблема
1) Когда я пытаюсь нажать на ссылку (используя Selenium) (название работы или краткую сводку, котораяоткрывает боковую панель), код заканчивает тем, что нажимает на 1-ю ссылку, которая является «спонсируемой».Невозможно найти и щелкнуть по реальному результату в id = 'jobOrganic'
2) После нажатия на реальный результат (вручную), я вижу, что полная сводная боковая панель находится под <td id='auxCol'>
, и внутри этого, под .Полное резюме содержится в тегах <p>
.Когда я пытаюсь получить полную сводку по селену, используя findAll('div':{'id':'vjs-desc'})
, все, что я получаю, это пустой результат [].
3) URL-адрес также изменяется при открытии боковой панели.Я пытался использовать Selenium, чтобы драйвер получил новый URL, а затем набрал URL, чтобы получить результаты, но все, что я получаю, это первый спонсируемый результат, а это не то, чего я хочу.Я не уверен, почему BeautifulSoup продолжает получать результаты для спонсоров, даже когда я запускаю код под 'id='jobOrganic'
реальными результатами.
Вот мой код.Я работал над этим почти два последних дня, изучил stackoverflow, документацию и Google, но не смог найти ответ.Я надеюсь, что кто-то может указать, что я делаю неправильно, и почему я не могу получить полное резюме.
Спасибо и извините, что так долго.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup as bs
url = 'https://www.indeed.com/'
driver = webdriver.Chrome()
driver.get(url)
whatinput = driver.find_element_by_id('text-input-what')
whatinput.send_keys('Junior Python')
whereinput = driver.find_element_by_id('text-input-where')
whereinput.click()
whereinput.clear()
whereinput.send_keys('Los Angeles, CA')
findbutton = driver.find_element_by_xpath('//*[@id="whatWhere"]/form/div[3]/button')
findbutton.click()
try:
popup = driver.find_element_by_id('prime-popover-close-button')
popup.click()
except:
pass
Вот где я застрял.Сводка результатов находится в разделе {'data-tn-component': 'organicJob'}, span class = 'summary'.Как только я нажимаю на это, открывается боковая панель.
soup = bs(driver.page_source,'html.parser')
contents = soup.findAll('div',{"data-tn-component":"organicJob"})
for each in contents:
summary = driver.find_element_by_class_name('summary')
summary.click()
Открывается боковая панель, но при этом щелкает первая рекламная ссылка на всей странице (спонсорская ссылка), а не реальный результат.По какой-то причине это в основном выходит за пределы набора «OrganicJob».
url = driver.current_url
driver.get(url)
Я попытался установить новый URL после нажатия на ссылку (спонсорская), чтобы проверить, могу ли я получить полную сводку боковой панели (хотя и спонсируемой, в качестве цели тестирования).
soup=bs(driver.page_source,'html.parser')
fullsum = soup.findAll('div',{"id":"vjs-desc"})
print(fullsum)
Это фактически печатает полную сводку боковой панели, но она продолжает печатать один и тот же 1-й результат снова и снова по всему циклу, вместо того, чтобы переходить к следующему.