小爬拉勾网职位

news/2024/7/19 9:14:47 标签: json, 爬虫, python

问题描述:爬取拉勾网python、工作地在北京的相关职业(python,北京),将结果保存。

1.页面分析:

因为拉勾网有反爬虫机制,所以需要设置相应的请求信息,由于职位信息AJAX异步响应在页面,所以直接访问异步请求。

查看响应:

2.代码: 

python">#!/usr/bin/env/python
# coding:utf-8
import sys
import requests
import json
from bs4 import BeautifulSoup as bs


def main():
   # 拉勾网有反爬虫机制
   # url='https://www.lagou.com/jobs/list_python?px=default&city=%E5%8C%97%E4%BA%AC#filterBox'

   # AJAX请求
   url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0'

   # 请求头信息
   headers = {
      'Cookie': 'SESSIONID=ABAAABAAAIAACBI386BBF2A4AF17A015A35A443275F849E; user_trace_token=20170823222931-7a66d0be-880f-11e7-8e7c-5254005c3644; LGUID=20170823222931-7a66d82d-880f-11e7-8e7c-5254005c3644; X_HTTP_TOKEN=efbd926a2120df44637a9a572dfe0f6e; _putrc=8582F8EBD102AF67; login=true; unick=%E6%8B%89%E5%8B%BE%E7%94%A8%E6%88%B71976; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPublish=1; hasDeliver=0; TG-TRACK-CODE=search_code; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1503498572; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1503502613; _ga=GA1.2.1002397109.1503498572; _gid=GA1.2.1028357858.1503498572; PRE_UTM=; PRE_HOST=; PRE_SITE=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_python%3Fpx%3Ddefault%26xl%3D%25E6%259C%25AC%25E7%25A7%2591%26city%3D%25E5%258C%2597%25E4%25BA%25AC; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_python%3Fpx%3Ddefault%26city%3D%25E5%258C%2597%25E4%25BA%25AC; LGSID=20170823233652-e3035a6a-8818-11e7-9fe3-525400f775ce; LGRID=20170823233656-e535491c-8818-11e7-9fe3-525400f775ce; SEARCH_ID=cc7603ed348d42898fdaec6b2dcb5e23; index_location_city=%E5%85%A8%E5%9B%BD',
      'Host': 'www.lagou.com',
      'Origin': 'https://www.lagou.com',
      'Referer': 'https://www.lagou.com/jobs/list_python?px=default&city=%E5%8C%97%E4%BA%AC',
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',
      'X-Anit-Forge-Code': '0',
      'X-Anit-Forge-Token': None,
      'X-Requested-With': 'XMLHttpRequest'
   }

   for pn in range(1, 31):
      # post参数
      post_form = {
         'kd': 'python'
      }
      post_form['first'] = 'false'
      post_form['pn'] = str(pn)
      if pn == 1:
         post_form['first'] = 'true'

      # 获取页面
      result = requests.post(url, headers=headers, data=post_form)
      if result.status_code != 200:
         print('requet failed!')
         sys.exit()
      # print(result.content.decode('utf-8'))
      file = 'position/positions_page' + str(pn) + '.json'
      try:
         result_json = result.json()
         # print(type(result_json))
         positions = result_json['content']['positionResult']['result']
         line = json.dumps(positions, ensure_ascii=False)
         with open(file, 'w', encoding='utf8') as file:
            file.write(line)
            print('save ',file ,' successfully!')
      except Exception as e:
         print('save ', file, ' failed!')

if __name__ == '__main__':
   main()

  

3.运行结果:

将结果以json格式保存到文件中:

格式化显示:

转载于:https://www.cnblogs.com/jasonhaven/p/7421044.html


http://www.niftyadmin.cn/n/1854901.html

相关文章

Kafak消息队列与其基础架构

消息队列的两种模式 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后清除) 消息产生者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费信息。 消息被消费后,Queue…

Kafka Java API(详解与代码实战)

Producer API 添加依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>0.11.0.0</version> </dependency>相关API KafkaProducer&#xff1a;需要创建一个生产者对象&am…

vue render函数

基础 vue推荐在绝大多数情况下使用template来创建你的html。然而在一些场景中&#xff0c;你真的需要javascript的完全编程能力。这就是render函数。它比template更接近编译器 <h1><a name"hello-world" href"#hello-world">Hello world!</…

Flume内置拦截器与自定义拦截器(代码实战)

官网上内置拦截器的表 由于拦截器一般针对Event的Header进行处理&#xff0c;这里先介绍一下Event event是flume中处理消息的基本单元&#xff0c;由零个或者多个header和body组成。Header 是 key/value 形式的&#xff0c;可以用来制造路由决策或携带其他结构化信息(如事件的…

[HDOJ6178]Monkeys(二分图最大匹配)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid6178 题意&#xff1a;希望在一棵树中删掉最多的边&#xff0c;使得剩下的k个点至少有一个点相连。 比赛时候学弟贪心dfs过的&#xff0c;然后发现这个题实际上是最大匹配。 任意两点相连代表匹配中的一条边&am…

Flume 开发 (企业开发案例)

1.监控端口数据案例 1)案例需求 首先启动Flume任务&#xff0c;监控本机44444端口 [服务端]&#xff1b; 然后通过netcat工具向本机44444端口发送消息 [客户端]&#xff1b; 最后Flume将监听的数据实时显示在控制台。 2)需求分析 3)实现步骤 1 [rootflume0 apache-flume-1.…

泛型集合的五中遍历方式

一、List遍历 Java中List遍历有三种方法来遍历泛型&#xff0c;主要为&#xff1a; 1.for循环遍历 2.iterator遍历 3.foreach遍历 package cn.sun.test; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.ut…

HDFS如何处理小文件

HDFS小文件的影响 影响NameNode的寿命&#xff0c;因为每个文件元数据存储在NameNode的内存中影响计算引擎的任务数量&#xff0c;比如每个小的文件都会生成一个Map任务 数据输入小文件处理 合并小文件&#xff1a;对小文件进行归档&#xff08;Har&#xff09;采用ConbinFi…