【发布时间】:2020-11-03 10:53:50
【问题描述】:
一段时间以来,我一直在尝试抓取 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
当然,我不能抓取任何信息。我怎样才能以正确的方式做到这一点?
【问题讨论】:
-
如何以正确的方式做到这一点?最有可能使用您已经找到的 API。许多网站都有反抓取机制来防止脚本加载它们。我强烈建议不要使用 beautifulsoup 而是使用 API。你也有被屏蔽的机会。
标签: python web-scraping beautifulsoup linkedin http-status-code-403