针对于https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=,进行爬虫操作。

1. 使用urlopen函数

from urllib import request
url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
resp = request.urlopen(url)
print(resp.read())

运行之后,在输出的时候,输出的页面源码信息很少。
原因:使用urlopen,网页会识别出该操作是一个python的爬虫操作。那么由于拉勾网做了反爬虫机制,所以返回的信息并不是网页真实的信息。

2. 使用request.Request类

from urllib import request
url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
req = request.Request(url, headers=headers)
resp = request.urlopen(req)
print(resp.read())

urlopen函数不同的是,request.Request是一个类。它有如下的一些参数:

我们可以通过设置headers(请求头)参数,来伪装我们的爬虫操作,从而可以避开反爬虫机制,爬取到我们想要的信息。headers中通常会有:User-AgentReferer两个属性。

3. 获取职位信息

在上述URL中,虽然在页面中可以看到一些职位信息:

但实际上,该URL的源代码并没有这些信息。因为这些职位信息是另一个URL的,而这两个URL通过.js文件被放到了一起。真正的职位信息实际上在https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false里面。

from urllib import request, parse
url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
referer = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
# 请求头的信息足够多时,可以成功爬取信息
headers = {'User-Agent': user_agent,'Referer': referer
}
# data数据需要通过urlencode,才能传入Request
data = {'first': 'true','pn': '1','kd': 'python'
}
# urlencode可以将data字典变为字符串,同时对其中特殊字符进行编码
# 在python3中,字符串是unicode编码,而Request中的data必须为bytes类型,所以利用encode('utf-8')将unicode编码为bytes
req = request.Request(url, headers=headers, data=parse.urlencode(data).encode('utf-8'), method='POST')
resp = request.urlopen(req)
print(resp.read().decode())

这个代码依然不能成功获取页面信息,会有{"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"117.151.83.211","state":2402}的信息输出。可能是请求头的信息不够多吧,目前不太懂。。。

4. 小结

在做爬虫的时候,要经常对网页进行“检查”。具体做法是:在网页空白处邮件–>检查–>Network。这里面会将该页面的所有信息的文件全部罗列出来。同时也会列出获取这些文件时对应的请求报文和响应报文。

而在上述写代码的过程中,需要对以下一些信息进行查看:

  • General中的Request URL
  • Request Headers中的user-agentreferer
  • Form Data中的所有信息

实战一:爬取拉勾网职位信息相关推荐

  1. 爬虫实战之全站爬取拉勾网职位信息

    全站爬取拉勾网职位信息 一.环境 window7 scrapy MySQL 二.简介 scrapy的全站爬取方式crawlspider跟其通用爬取方式spider实现上有一定的区别,两者都有各自的优势 ...

  2. java爬虫拉勾网_[Java教程]node.js爬虫爬取拉勾网职位信息

    [Java教程]node.js爬虫爬取拉勾网职位信息 0 2017-03-14 00:00:21 简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳 ...

  3. scrapy 爬取拉勾网职位信息

    需求:1.使用python爬虫框架,爬取拉勾网职位信息, 2.将爬取的职位信息存储到json格式的文件中 3.将爬取的数据进行数据分析 1.图片中的链接是职位列表页的链接,进行翻页,该链接没有变化,无 ...

  4. 用selenium爬取拉勾网职位信息及常见问题处理

    初步爬虫框架构造 下面采用selenium进行爬虫,首先构造一下爬虫的框架,将整个程序构造为一个类,其中主要包括:获取每个详细职位信息的链接(parse_page_url).请求/关闭详细职位信息页面 ...

  5. Scrapy爬取拉勾网职位信息

    很多网站都用了一种叫做Ajax(异步加载)的技术,通常我们会发现这种网页,打开了,先给你看上面一部分东西,然后剩下的东西再慢慢加载,也就是局部加载.所以你可以看到很多网页,浏览器中的网址没变,但是数据 ...

  6. python 免登录爬取 拉勾网职位信息

    需要安装的库requests和pandas 2019年8月12日测试可用,下面是源码,复制粘贴即可用 import requests,pandasdef parse_page(keyword,pn): ...

  7. Python搭建代理池爬取拉勾网招聘信息

    先来看一张图了解下爬虫 实现功能 多线程爬取拉勾网招聘信息 维护代理 ip 池 搭建 node 服务器 Taro 使用 echarts 做数据分析 1.多线程爬取拉勾网招聘信息 Tip:涉及知识 1. ...

  8. python爬虫: 爬取拉勾网职位并分析

    文章目录 0. 前言 1. 用到的软件包 2. 解析网页 3. 数据清洗 4. 词云 5. 描述统计 6. 实证统计 7. 完整代码 7.1 爬虫部分的代码 7.2 数据分析部分的代码 0. 前言 本 ...

  9. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(一)

    文章目录 前言 一.准备我们的库 二.分析分析 三. 代码 四.数据展示 小唐的心路历程 上一篇:没有啦! 下一篇:什么你还不知道招聘信息,小唐来教你--最新2021爬取拉勾网招聘信息(二) 前言 有 ...

最新文章

  1. 新笔记本怎么在桌面添加计算机文件夹,win10桌面悬浮文件夹怎么弄_win10电脑桌面悬浮文件夹如何添加-win7之家...
  2. 线程信息的获取和设置
  3. zend studio设置utf8
  4. linux下前一天时间格式
  5. boost::contract模块实现check宏的测试程序
  6. VTK:PolyData之ExtractSelectionOriginalId
  7. 310. Minimum Height Trees
  8. 基于Nginx反向代理及负载均衡
  9. python课程报告模板_《Python语言编程课程设计》课程设计报告模版
  10. 7本最经典的逻辑思维书籍推荐
  11. java pojo类
  12. ajax几种回调函数
  13. Win10 - 使用‘Alt+Tab’不能切换窗口及更改切换风格
  14. 初学Spring Cloud踩得坑之Caused by: org.springframework.context.ApplicationContextException
  15. html鼠标悬停闪烁,鼠标悬停闪烁星星插件jQuery-canvas-sparkles
  16. SAP 系统销售流程成本和收入的确认
  17. Android 9 ServerManger源码分析
  18. 4.请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。
  19. 谐波减速器的结构简图及传动比说明
  20. 计算机网络学习云平台,云计算机网络学习系统,云计算机网络实验室设备

热门文章

  1. (一)Ubuntu安装详细教程(从镜像制作到NVIDIA驱动安装全流程)——超详细的图文教程
  2. STM32F4 | 独立看门狗(IWDG)实验
  3. JAVA 时间戳与Date类型的相互转换、格式化日期、字符串日期转Date
  4. 中国经济稳中有进态势依旧
  5. 两种编写代码风格方式对比
  6. C++实现基于区块链的物流信息存储系统
  7. unsigned long long类型与long long类型
  8. Unity中的静态合批、动态合批、GPU Instance 以及SRP Batching
  9. 如何判断两个ip是否属于同一子网;如何确定子网掩码,让300台服务器处于同一网段
  10. PMP考前冲刺2.20 | 2023新征程,一举拿证