1、说明
使用Python爬linkedin网站,爬公司规模在1001-5000的瑞士公司信息,只爬公司名、公司规模、所在行业、所在地这四个信息,且不使用linkedin官方API。
2、步骤说明
1>、模拟登录
2>、爬公司信息
3>、获取下一页的URL
3、代码片段
1>、模拟登录
从登录页面填写form表单,该表单中有一些JS验证,在JS开启时,会随着表单一起提交。不过不填也没事,毕竟不是每个人都会开启JS,故跳过。
这里使用BeautifulSoup模块来提取html页面中的一些信息。
def login(s):
#打开页面
r = s.get('https://www.linkedin.com/uas/login')
#html处理
soup = BeautifulSoup(r.text, "lxml")
soup = soup.find(id="login") #查找表单
#提取表单信息
loginCsrfParam = soup.find('input', id = 'loginCsrfParam-login')['value']
csrfToken = soup.find('input', id = 'csrfToken-login')['value']
sourceAlias = soup.find('input', id = 'sourceAlias-login')['value']
isJsEnabled = soup.find('input',attrs={"name" :'isJsEnabled'})['value']
source_app = soup.find('input', attrs={"name" :'source_app'})['value']
tryCount = soup.find('input', id = 'tryCount')['value']
clickedSuggestion = soup.find('input', id = 'clickedSuggestion')['value']
signin = soup.find('input', attrs={"name" :'signin'})['value']
session_redirect = soup.find('input', attrs={"name" :'session_redirect'})['value']
trk = soup.find('input', attrs={"name" :'trk'})['value']
fromEmail = soup.find('input', attrs={"name" :'fromEmail'})['value']
#填充表单
payload = {
'isJsEnabled':isJsEnabled,
'source_app':source_app,
'tryCount':tryCount,
'clickedSuggestion':clickedSuggestion,
'session_key':'**********',
'session_password':'*********',
'signin':signin,
'session_redirect':session_redirect,
'trk':trk,
'loginCsrfParam':loginCsrfParam,
'fromEmail':fromEmail,
'csrfToken':csrfToken,
'sourceAlias':sourceAlias
}
#提交表单
s.post('https://www.linkedin.com/uas/login-submit', data=payload)
return s
2>、爬公司信息
linkedin将公司内容放在注释里面,囧!格式类似于下面这样:
<code id="voltron_srp_main-content" style="display:none;">
<!--{"content":{"lix_header_lowercase":"control","l