在 LinkedIn 上抓取工作机会时遇到的困难
Difficulties when web scraping job offers on LinkedIn
一段时间以来,我一直在尝试抓取 LinkedIn 的工作机会部分,但无济于事。顺便说一下,我知道这个网站有自己的 API 但我想用 Beautiful Soup 来做,因为我前一段时间学过它是为了练习目的。
这是我的代码:
import requests
from bs4 import BeautifulSoup
client = requests.Session()
HOMEPAGE_URL = 'https://www.linkedin.com'
LOGIN_URL = 'https://www.linkedin.com/login/en'
URL = 'https://www.linkedin.com/jobs/search/?geoId=101174742&keywords=data%20analyst&location=Canada'
html = client.get(HOMEPAGE_URL).content
soup = BeautifulSoup(html, "html.parser")
login_information = {
'session_key':'<username>',
'session_password':'<password>',
'loginCsrfParam': '<csrftoken>',
}
try:
p = client.post(LOGIN_URL, data=login_information)
print ("Login Successful")
except:
print ("Failed to Login")
到这里为止一切都很好。我得到“登录成功”,但是当我要求“状态代码”时,我得到 403:
p.status_code
Output: 403
当然我不能抓取任何信息。我怎样才能以正确的方式做到这一点?
你真的不需要 re-invent 方向盘。有一个名为 surprise, surprise, linkedin-api 的模块,用于通过 so-called Voyager
服务访问各种 LinkedIn 数据(包括职位)。
用法示例:
from linkedin_api import Linkedin
# Authenticate using any Linkedin account credentials
api = Linkedin('reedhoffman@linkedin.com', '*******')
# GET a profile
profile = api.get_profile('billy-g')
# GET a profiles contact info
contact_info = api.get_profile_contact_info('billy-g')
# GET 1st degree connections of a given profile
connections = api.get_profile_connections('1234asc12304')
我分享这个是因为你可能很难用旧的 BeautifulSoup
和 requests
抓取 LinkedIn。另外,请注意,不要将您的个人帐户用于 LinkedIn 上的任何抓取活动。
一段时间以来,我一直在尝试抓取 LinkedIn 的工作机会部分,但无济于事。顺便说一下,我知道这个网站有自己的 API 但我想用 Beautiful Soup 来做,因为我前一段时间学过它是为了练习目的。
这是我的代码:
import requests
from bs4 import BeautifulSoup
client = requests.Session()
HOMEPAGE_URL = 'https://www.linkedin.com'
LOGIN_URL = 'https://www.linkedin.com/login/en'
URL = 'https://www.linkedin.com/jobs/search/?geoId=101174742&keywords=data%20analyst&location=Canada'
html = client.get(HOMEPAGE_URL).content
soup = BeautifulSoup(html, "html.parser")
login_information = {
'session_key':'<username>',
'session_password':'<password>',
'loginCsrfParam': '<csrftoken>',
}
try:
p = client.post(LOGIN_URL, data=login_information)
print ("Login Successful")
except:
print ("Failed to Login")
到这里为止一切都很好。我得到“登录成功”,但是当我要求“状态代码”时,我得到 403:
p.status_code
Output: 403
当然我不能抓取任何信息。我怎样才能以正确的方式做到这一点?
你真的不需要 re-invent 方向盘。有一个名为 surprise, surprise, linkedin-api 的模块,用于通过 so-called Voyager
服务访问各种 LinkedIn 数据(包括职位)。
用法示例:
from linkedin_api import Linkedin
# Authenticate using any Linkedin account credentials
api = Linkedin('reedhoffman@linkedin.com', '*******')
# GET a profile
profile = api.get_profile('billy-g')
# GET a profiles contact info
contact_info = api.get_profile_contact_info('billy-g')
# GET 1st degree connections of a given profile
connections = api.get_profile_connections('1234asc12304')
我分享这个是因为你可能很难用旧的 BeautifulSoup
和 requests
抓取 LinkedIn。另外,请注意,不要将您的个人帐户用于 LinkedIn 上的任何抓取活动。