#python #html #beautifulsoup #linkedin
#python #HTML #beautifulsoup #LinkedIn
Вопрос:
URL-адрес в коде указывает на ряд объявлений в LinkedIn
Я просто хочу получить ссылку / href каждого списка, но на выходе получается пустой. Я просто хочу html каждого списка.
import pandas as pd
from bs4 import BeautifulSoup
import csv
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'}
url='https://www.linkedin.com/jobs/search/?currentJobId=2213597199amp;geoId=103644278amp;keywords=cyber analystamp;location=United Statesamp;start=25'
r=requests.get(url,headers)
soup=BeautifulSoup(r.content,'html.parser')
listing=soup.find_all('div',class_="job-card-container relative job-card-list job-card-container--clickable job-card-list--underline-title-on-hover jobs-search-results-list__list-item--active jobs-search-two-pane__job-card-container--viewport-tracking-1")
for info in listing:
link= info.find('a',href=True)
print(link)
Комментарии:
1. Вы не сможете этого сделать
requests
, слишком много рендеринга на стороне клиента. Вам придется переключиться на безголовый браузер (возможно, chrome) и использовать selenium. Также будьте готовы к отклонению запросов — этим парням не нравится, когда их очищают.2. запросы не были отклонены, это выполнимо..
3. да, запрос не отклонен, но вы не получаете фактические данные, которые вы хотите, вы получаете только часть html, информация о самих списках загружается через JavaScript. И
requests
не будет выполнять javascript. Попробуйте это — получите фрагмент текста и попробуйте выполнить поиск слов, которые вы пытаетесь очистить — их там не будет.4. Вы правы :/
Ответ №1:
Как было предложено в комментариях, вы можете попробовать selenium
.
Вот как получить все предложения о работе по ссылкам:
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
url = "https://www.linkedin.com/jobs/search/?currentJobId=2213597199amp;geoId=103644278amp;keywords=cyber analystamp;location=United Statesamp;start=0amp;redirect=false"
driver.get(url)
time.sleep(2)
elements = driver.find_elements_by_class_name("result-card__full-card-link")
job_links = [e.get_attribute("href") for e in elements]
for job_link in job_links:
print(job_link)
Вывод:
https://www.linkedin.com/jobs/view/cyber-threat-intelligence-analyst-at-linkedin-2261917520?refId=b5cf1ce3-d032-4aaa-8810-26d4782cc34damp;position=1amp;pageNum=0amp;trk=public_jobs_job-result-card_result-card_full-click
https://www.linkedin.com/jobs/view/cyber-security-analyst-at-modis-2273028250?refId=b5cf1ce3-d032-4aaa-8810-26d4782cc34damp;position=2amp;pageNum=0amp;trk=public_jobs_job-result-card_result-card_full-click
https://www.linkedin.com/jobs/view/jr-python-cyber-analyst-ts-sci-at-deloitte-2265989857?refId=b5cf1ce3-d032-4aaa-8810-26d4782cc34damp;position=3amp;pageNum=0amp;trk=public_jobs_job-result-card_result-card_full-click
https://www.linkedin.com/jobs/view/cyber-security-analyst-at-modis-2307968344?refId=b5cf1ce3-d032-4aaa-8810-26d4782cc34damp;position=4amp;pageNum=0amp;trk=public_jobs_job-result-card_result-card_full-click
https://www.linkedin.com/jobs/view/entry-level-cyber-security-analyst-at-hcl-technologies-2271846580?refId=b5cf1ce3-d032-4aaa-8810-26d4782cc34damp;position=5amp;pageNum=0amp;trk=public_jobs_job-result-card_result-card_full-click
and so on ..
Класс, который вам нужен, находится здесь:
Комментарии:
1. Привет, код выполняется. Можете ли вы прикрепить снимок экрана класса (result-card__full-card-link) Я нашел это раньше, но не могу найти его, даже если выполняется код