python爬虫 —爬拉勾网python爬虫职位(一)

爬虫可以简单的分为三个部分,url分析,网页分析与信息获取,信息存储。

(1)url分析

在进行爬取前,首先分析拉钩网的url特点。打开拉钩网,在搜索栏界面输入 python爬虫 然后进行搜索,


得到如下界面


然后,右键—查看源代码,会发现在源代码页面找不到职位的信息,可以猜想,网站使用的是其他的方法来加载信息的,比如,Ajax。接下来,右键—审查元素——Network


选择xhr ,然后选择 name 下的一个链接,然后点击headers 。在headers下面,General 下面,可以看到 

Request URL:https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false
Request Method:POST

因此,该网页的请求链接:

url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'

请求方式是 post。

再继续向下,可以看到


点击拉钩网职位页面的“下一页”,可以看到,requests url没有变化,但form data 中的 pn 值由 1 变为了 2,因此,可以看出,页面的切换是由 pn 控制的。因此,可以通过改变pn值来换页。


到这里,url的构造逻辑,基本就已经完成了。这部分的源码如下:

def url_create():

    headers={'Cookie':'user_trace_token=20180617062143-a2c67f89-f721-42a0-a431-0713866d0fc1; __guid=237742470.3953059058839704600.1529187726497.5256;\
    LGUID=20180617062145-a70aea81-71b3-11e8-a55c-525400f775ce; index_location_city=%E5%85%A8%E5%9B%BD;\
    JSESSIONID=ABAAABAAAIAACBIA653C35B2B23133DCDB86365CEC619AE; PRE_UTM=; PRE_HOST=; PRE_SITE=;\
    PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_pythonpytho%25E7%2588%25AC%25E8%2599%25AB%3Fcity%3D%25E5%2585%25A8%25E5%259B%25BD;\
    TG-TRACK-CODE=search_code; X_MIDDLE_TOKEN=8a8c6419e33ae49c13de4c9881b4eb1e; X_HTTP_TOKEN=5dd639be7b63288ce718c96fdd4a0035;\
    _ga=GA1.2.1060168094.1529187728; _gid=GA1.2.1053446384.1529187728; _gat=1;\
    Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1529190520,1529198463,1529212181,1529212712;\
    Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1529225935; LGSID=20180617164003-0752289a-720a-11e8-a8bc-525400f775ce;\
    LGRID=20180617165832-9c78c400-720c-11e8-a8bf-525400f775ce; SEARCH_ID=1dab13db9fc14397a080b2d8a32b7f27; monitor_count=70',
    'Host':'www.lagou.com',
    'Origin':'https://www.lagou.com',
    'Referer':'https://www.lagou.com/jobs/list_python%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=',
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'X-Requested-With':'XMLHttpRequest'}
    
    city_list = ['上海', '北京', '杭州', '成都','苏州']
    position_list=['python爬虫', 'python数据分析']    

    for city in city_list:
        for position in position_list:
            url = "https://www.lagou.com/jobs/list_{}?city={}".format(position, city)
            data = {
                'first':flag,       #true or false
                'pn':page,          #切换页面 
                'kd':position,      #职位
                }
            response = requests.post(url, headers = headers, data= data)
            yield response.json()

猜你喜欢

转载自blog.csdn.net/qq_34246164/article/details/80721148