拉勾網爬蟲-python實踐

本次爬蟲實踐,使用到了cookies這一概念,有興趣的童鞋們可以自行搜索資料。
這次的代碼并未對搜索獲得的結果數量進行邏輯判斷,after all,我們只是為學習爬蟲,大家可以發揮自己的分析能力和編程能力優化這段代碼,有興趣的話評論交流。
話不多,直接上代碼。

#!/usr/bin/env python
# -*- coding:utf-8
import requests
import pandas as pd
from collections import OrderedDict
from bs4 import BeautifulSoup
import time


def getPosInfo(posList,curSession):
    posinfoList=[]
    if posList['state'] == 1:
        posList = posList['content']['data']['page']
    else:
        print('Something goes wrong with our spider!')
        return ['no job available']
    for pos in posList['result']:
        posinfo = OrderedDict()
        posinfo['公司全稱'] = pos['companyFullName']
        posinfo['公司縮寫'] = pos['companyName'] 
        posinfo['創建時間'] = pos['createTime']
        posinfo['職位名稱'] = pos['positionName']
        posinfo['薪水'] = pos['salary']
        posinfo['職位編號'] = str(pos['positionId'])
        getPosDetail(posinfo,curSession)
        posinfoList.append(posinfo)
        time.sleep(0.5)

    return posinfoList


def getPosDetail(posinfo,curSession):
    resp = curSession.get(posDetailurl.format(positionid=posinfo['職位編號']))
    print(resp.url)
    bsobj = BeautifulSoup(resp.text,'html.parser')
    temptation = bsobj.select('div.temptation')
    if temptation != []:
        posinfo['職位誘惑'] = temptation[0].string.strip().lstrip('職位誘惑:')
    else:
        posinfo['職位誘惑']= '無'
    desc=''
    for line in bsobj.select('div.content p')[::]:
        if line.string != None:
            desc+=(line.string + '\n')
    posinfo['職位描述'] = desc


cookies={'JESSIONID':'XXX',
         'LGRID':'XXX',
         'LGSID':'XXX',
         'LGUID':'XXX',
         'user_trace_token':'XXX',
         'login':'true',
         }
starturl = 'https://m.lagou.com/search.json'
posDetailurl='https://m.lagou.com/jobs/{positionid}.html'
headers={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Mobile Safari/537.36',
         'X-Requested-With':'XMLHttpRequest',
         'Accept':'application/json',
         'Accept-language':'zh-CN,zh;q=0.8',
         'Accept-Encoding':'gzip, deflate, br'}

params={'city':'上海',
        'positionName':'python 爬蟲',
        'pageNo':1,
        'pageSize':15}

city = input("請輸入職位所在城市: ")
position = input("請輸入搜索職位: ")
params['city']= city
params['positionName'] = position
poslist=[]
with requests.Session() as s:
    s.headers.update(headers)
    s.cookies.update(cookies)
    #請自行調節爬取的頁數
    for page in range(1,3):
        params['pageNo']=page
        content = s.get(starturl,params=params)
        content.encoding='utf-8'
        poslist.extend(getPosInfo(content.json(),s))

ds = pd.DataFrame(poslist)
ds.to_excel('拉鉤.xlsx')

cookies請自行注冊拉勾網賬號然后抓包獲取。
學海無涯,擁抱改變,不斷進化。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1 前言 作為一名合格的數據分析師,其完整的技術知識體系必須貫穿數據獲取、數據存儲、數據提取、數據分析、數據挖掘、...
    whenif閱讀 18,103評論 45 523
  • 有時候 我覺得孤獨很美 美到孤傲 沉浸在自我世界里 就像一個人擁有一整片大海 我可以隨心所欲地暢游 不用擔心和別人...
    心理咨詢師韻韻閱讀 241評論 4 1
  • 我不是一個粘人的女生 何時給你最后一封信? 假如有一天,你遇見了一個讓你砰然心動的人, 微信,碎片化的交流 上天安...
    北方燕閱讀 268評論 0 0
  • 總是在后知后覺中驚醒,發現自己的行為多么愚蠢荒唐,我從不把世故放在眼里,因為覺得虛偽無聊,但就是自己排斥的東西反而...
    夜白安閱讀 286評論 0 0