python抓取百度聘職位—全站

1.準(zhǔn)備
網(wǎng)站:http://zhaopin.baidu.com

2.思路

1.由于是動態(tài)網(wǎng)頁,使用json解析數(shù)據(jù)
2.
3.

3.難點(diǎn)/解決

  1.解析json數(shù)據(jù)
  2.cookie使用fildder抓包獲取

4.代碼

import requests
import json
import pymysql
import time
from bs4 import BeautifulSoup
import re


conn = pymysql.Connect(host='x',user='x',password='x',database='x',port=3306,charset='x')
cursor =conn.cursor()
sql = "CREATE TABLE IF NOT EXISTS %s(ID INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT," \
      "A VARCHAR(255)," \
      "B VARCHAR(255)," \
      "C VARCHAR(255))"
dbname=input('ABC輸入數(shù)據(jù)庫名:')
cursor.execute(sql%dbname)
print('創(chuàng)建數(shù)據(jù)庫%s成功!'%dbname)

def get_url(post,page,city):
    url = 'http://zhaopin.baidu.com/api/quanzhiasync?query={}&sort_type=1&city={}&detailmode=close&rn=20&pn={}'.format(post,city,page)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36'
        ,'Referer': 'http://zhaopin.baidu.com/quanzhi?tid=4139&ie=utf8&oe=utf8&query=python&city_sug=%E5%B9%BF%E5%B7%9E'
        , 'Host': 'zhaopin.baidu.com'
        ,'Cookie':'Hm_lvt_dc173081ad0848b7d3e412373bb02119=1493714008; PSTM=1500109449; BIDUPSID=EBA58E2B59F5D325007E6FA067243233; PRY=1; BAIDUID=57829DB7D914A3AB376B0A2A7415FD8C:FG=1; Hm_lvt_da3258e243c3132f66f0f3c247b48473=1509328256; Hm_lvt_24117ca0ed302abec8cd5b93e02d18cd=1509858595; BDUSS=ltQWtHcEYxcEt6eEVkdzBUemo0R1dPZHJxdE9LOE5EbXhYaHpQMWJTVEUta0ZhQVFBQUFBJCQAAAAAAAAAAAEAAABIwC9~eWFuZ2Z1bG9uZ2hvbWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMRtGlrEbRpaOF; MCITY=-%3A; BDRCVFR[VIIOqqdxwZ_]=mk3SLVN4HKm; PSINO=7; H_PS_PSSID=1460_21111_22075; URLTITLESALARY=%20; Hm_lvt_c676f95eebbd4fa8a59418f48090ac4d=1513303313,1514278789,1514336165,1515219239; Hm_lpvt_c676f95eebbd4fa8a59418f48090ac4d=1515219701'

    }
    #pn,0,20
    data = {
        'pn': '{}'.format(page)
        , 'rn':'20'
        , 'detailmode':'close'
        , 'city_sug':'{}'.format(city)
        , 'sort_type':'1'
        , 'query':'{}'.format(post)

    }


    try:
        response = requests.get(url,headers=headers,params=data).text
        json_dict = json.loads(response)
        json_data = json_dict['data']
        json_main = json_data['main']
        json_datas = json_main['data']

        i=0
        item = json_datas.get('disp_data')
        for items in item:
            ####A
            city = items.get('city')
            price = items.get('salary')
            title = items.get('title')
            buty = items.get('description_jd')
            terrace = items.get('source')
            times = items.get('lastmod')
            company_data = items.get('officialname'),':,崗位:{},城市:{},工資:{}\n,{}平臺:{},{}\n'.format(title,city,price.split('-')[0],terrace,buty,times)
            #print(company_data)
            company=items.get('officialname')
            ###B
            phone1 = items.get('@cts')
            phone2 = items.get('@dts')
            email = items.get('email')
            companyb = items.get('officialname'),'電話:{},電話:{},EMail:{}'.format(phone1,phone2,email)

            i=i+1
            #變成str,好存入MySQL
            company_str1 = ''.join(tuple(company_data))
            company_str2_phone = ''.join(tuple(companyb))
            print(i)
            print(company_str1,company_str2_phone)

            #print(company,title)
            #print(i)
            ####數(shù)據(jù)庫
            sql = "INSERT INTO %s(A,B)VALUES('%s','%s')"
            values = (dbname,company_str1,company_str2_phone)
            cursor.execute(sql%values)
            print('導(dǎo)入成功')
        conn.commit()
        time.sleep(0.1)
    except:
        print('response error!!!')
        return None

    else:
        pass

def main():
    urls = 'http://zhaopin.baidu.com/quanzhi?tid=4139&ie=utf8&oe=utf8&query=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90&city_sug=%E5%B9%BF%E5%B7%9E'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36'
        ,
        'Referer': 'http://zhaopin.baidu.com/quanzhi?tid=4139&ie=utf8&oe=utf8&query=python&city_sug=%E5%B9%BF%E5%B7%9E'
        , 'Host': 'zhaopin.baidu.com'
        ,
        'Cookie': 'Hm_lvt_dc173081ad0848b7d3e412373bb02119=1493714008; PSTM=1500109449; BIDUPSID=EBA58E2B59F5D325007E6FA067243233; PRY=1; BAIDUID=57829DB7D914A3AB376B0A2A7415FD8C:FG=1; Hm_lvt_da3258e243c3132f66f0f3c247b48473=1509328256; Hm_lvt_24117ca0ed302abec8cd5b93e02d18cd=1509858595; BDUSS=ltQWtHcEYxcEt6eEVkdzBUemo0R1dPZHJxdE9LOE5EbXhYaHpQMWJTVEUta0ZhQVFBQUFBJCQAAAAAAAAAAAEAAABIwC9~eWFuZ2Z1bG9uZ2hvbWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMRtGlrEbRpaOF; MCITY=-%3A; BDRCVFR[VIIOqqdxwZ_]=mk3SLVN4HKm; PSINO=7; H_PS_PSSID=1460_21111_22075; URLTITLESALARY=%20; Hm_lvt_c676f95eebbd4fa8a59418f48090ac4d=1513303313,1514278789,1514336165,1515219239; Hm_lpvt_c676f95eebbd4fa8a59418f48090ac4d=1515219701'

    }
    try:
        response = requests.get(urls, headers).text
        soup = BeautifulSoup(response, 'lxml')
        item = soup.find_all('div', attrs={'class': re.compile('all-jobs')})
        city = soup.find_all('div', attrs={'class': 'tabs-body'})
        for citys in city:
            cityss = citys.find_all('dd')
            for g in cityss:
                city_name = g.get_text()
                # city_name是城市名字
                # print(city_name)

                for items in item:
                    a = items.find_all('a')
                    for b in a:
                        profession = b.get_text()
                        # profession=職業(yè)

                        for page in range(0,200,20):
                            #page=頁碼
                            get_url(post=profession,city=city_name,page=page)
                            print('城市:%s,行業(yè)%s,頁碼%s'%(city_name,profession,page))
    except:
        print('main,error!!!')


if __name__ == '__main__':
    main()

    print('CLOSE DATABASE OK!!!')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • 茉莉的書——《綻放》看到第5章。攤在面前的這篇是《像不曾失去過那樣,繼續(xù)愛》。 《如果我回頭你還在,該多好》,王祎...
    聽雨呢喃閱讀 1,890評論 8 7
  • 走過多少城市 到過多少地方 有一座城市 我久久難忘 因?yàn)橐粋€(gè)人 我把這里當(dāng)故鄉(xiāng) 這個(gè)人就是你 你給我念想 面帶微笑...
    銀河灣閱讀 1,725評論 1 3
  • 2017.9.5 《長頸鹿不會跳舞》 【文】吉爾斯 安德烈 【圖】蓋伊 帕克 里斯 【譯】麥豆,蘭童 從大方面來講...
    Ice的零度空間閱讀 74,054評論 0 9
  • 向往一種生活如同草原遷徙的角馬星球上的事物不曾阻擋前進(jìn)的步伐踩著未冷的尸體帶著瞬間的懷念熱血和冷酷讓生命變的絢爛一...
    冷榆閱讀 508評論 3 10

友情鏈接更多精彩內(nèi)容