小爬拉勾网职位

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

1.页面分析:

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

查看响应:

2.代码:

#!/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格式保存到文件中:

格式化显示:

时间: 2024-10-09 22:56:02

小爬拉勾网职位的相关文章

scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立

本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visual studio一劳永逸,如果报错缺少前置依赖,就先安装依赖) 本篇主要对scrapy生成爬虫项目做一个基本的介绍 tips:在任意目录打开cmd的方式可以使用下面这两种方式 shift + 右键打开cmd(window10的powershell你可以简单理解为cmd升级版) 在路径框直接输入cmd

Python爬虫的法律边界(二)小爬怡情,大爬over!

数据抓取的门槛越来越低,会点程序,或使用网络工具都可以薅点数据,新入行了不少爬虫选手,但是对抓取使用数据的法律风险可能缺少认识.尤其是从去年的<网络安全法>实施开始,被新闻公开报道的相关法律诉讼已有好几起. 有人会争议互联网本质是鼓励分享,很多UGC的网站内容还是用户贡献的,网络公开数据应该都可以使用. 我也希望是这样,但现实不是这样. 所以抓取数据前你最好看下被抓对象的知识产权申明,如果你是公司职员也关心下公司让你抓取数据的用途,多少了解下潜在风险. 以下是几个典型的爬虫选手爱光顾的网站知识

【实战】用request爬取拉勾网职位信息

from urllib import request import urllib import ssl import json url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false' headers = { 'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like

python 爬虫2-正则表达式抓取拉勾网职位信息

import requestsimport re #正则表达式import time import pandas #保存成 CSV #header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0'}header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/2

小爬新浪新闻AFCCL

1.任务目标: 爬取新浪新闻AFCCL的文章:文章标题.时间.来源.内容.评论数等信息. 2.目标网页: http://sports.sina.com.cn/z/AFCCL/ 3.网页分析 4.源代码: #!/usr/bin/env/python # coding:utf-8 import sys import requests from bs4 import BeautifulSoup import json import re if __name__ == '__main__': url =

小爬静态页面图片

以慕课网http://www.imooc.com/首页为例 源代码: #coding:utf-8 class Outputer: def __init__(self,directory): self.directory=directory def output(self,file,content): try: f=open(self.directory+file,'wb') f.write(content) except Exception as err: print(err) finally:

CrawlSpider爬取拉钩

CrawlSpider继承Spider,提供了强大的爬取规则(Rule)供使用 填充custom_settings,浏览器中的请求头 from datetime import datetime import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from ArticleSpider.items import LagouJobItem,

python 爬取网页简单数据---以及详细解释用法

一.准备工作(找到所需网站,获取请求头,并用到请求头) 找到所需爬取的网站(这里举拉勾网的一些静态数据的获取)----------- https://www.lagou.com/zhaopin/Python/ 请求头的作用:模拟真实用户进入网站浏览数据-----------headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75

shell脚本——爬取域名一级页面元素并判断其可缓存性

来了一个域名如何判断其缓存与否,高大上的专业爬虫当然可以做分析,如果不是很严谨的分析,通过shell脚本也可以实现,来看看我这个一层页面的小爬吧,哈哈哈,先脚本执行后的结果图: 在处理的时候,会用elinks把页面上所有的元素爬出来,并做统计,用curl探测头信息,通过cache-control头来做判断是否可缓存,如果一个域名下超过70%的url可缓存,那么我就简单认为这个host是可以缓存的,虽然比较粗糙,但是做一个粗略的参考和学习应该足够. 脚本程序如下: #/bin/sh #### 分析