python最簡單的爬蟲 , 一看就會

福爾摩斯恆發表於2018-06-14

爬取智聯招聘python的崗位數


開始爬蟲前先檢視網址有什麼特點 , 爬取的內容要往哪裡入手 , 在智聯招聘搜尋python的崗位出現的網址是https://sou.zhaopin.com/jobs/searchresult.ashx?jl=杭州&kw=python

https://sou.zhaopin.com/jobs/searchresult.ashx?這個可以不用管

jl 代表的是地址在杭州 

kw 代表搜尋的內容是搜尋的內容

import urllib
from urllib import request, parse
import re

#封裝成一個url函式
def getJobNum(kw):
    #模擬瀏覽器新增相應頭
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}

    url = "https://sou.zhaopin.com/jobs/searchresult.ashx?" + kw

    request = urllib.request.Request(url, headers=header)
    response = urllib.request.urlopen(request)
    html = response.read().decode()  # HTML原始碼
    '''
    <em>2011</em>
    '''
    jobNumre = "<em>(\d+)</em>"  # 匹配崗位數量

    jobnum = re.findall(jobNumre, html)  # 查詢
    return jobnum[0]


if __name__ == '__main__':
    jobList = ['java', 'php', 'python', 'go']
    jobNumdict = {}  # 儲存
    for job in jobList:
        # jl = 杭州 & kw = php
        kw = {"jl": "杭州", 'kw': job}
        kw = urllib.parse.urlencode(kw)  # 編碼

        num = getJobNum(kw)
        jobNumdict[job] = num
    print(jobNumdict)


1.匯入URL模組

import urllib
from urllib import response,parse
import re

2.模擬瀏覽器新增請求頭

#封裝成一個url函式
def getJobNum(kw):
    #模擬瀏覽器新增相應頭
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}

3.url請求的地址

url = "https://sou.zhaopin.com/jobs/searchresult.ashx?" + kw

4.把url和請求頭帶入發起請求

request = urllib.request.Request(url, headers=header)

5.開啟請求會得到響應內容

response = urllib.request.urlopen(request)

6.把響應的內容進行解碼

html = response.read().decode()

7.正則匹配崗位數量


jobNumre = "<em>(\d+)</em>"  # 匹配崗位數量

8.查詢到符合正則的內容

jobnum = re.findall(jobNumre, html)  # 查詢
return jobnum[0]

9.設定想要對比的職位有那些

if __name__ == '__main__':
    jobList = ['java', 'php', 'python', 'go']
    jobNumdict = {}  # 儲存

10.遍歷每個職位對應的數量並進行編碼

for job in jobList:
    # jl = 杭州 & kw = 
    kw = {"jl": "杭州", 'kw': job}
    kw = urllib.parse.urlencode(kw)  # 編碼

11.把資料帶入函式中得到相應的數量

num = getJobNum(kw)
    jobNumdict[job] = num
print(jobNumdict)

結果如下

{'java': '5665', 'php': '1262', 'python': '2002', 'go': '219'}

相關文章