python爬取网站大数据_[Python]爬虫抓取大数据职位数据

《纽约时报》2012年2月的一篇专栏中所称,“大数据”时代已经降临,在商业、经济及其他领域中,决策将日益基于数据和分析而作出,而并非基于经验和直觉。随大数据时代一起来来临的,是越来越多的大数据工作岗位。在此,我们利用Python编程,抓取智联招聘、51job等网站上面有关大数据的工作岗位数据。

爬虫基础知识

数据来源

网络爬虫的数据一般都来自服务器的响应结果,通常有html和json数据等,这两种数据也是网络爬虫的主要数据来源。

其中html数据是网页的源代码,通过浏览器-查看源代码可以直接查看,例如:

简书主页部分源码示例

json是一种数据存储格式,往往包含了最原始的数据内容,一般不直接显示在网页中,这里我们可以通过Chrome浏览器-开发者工具中的Network选项捕获到服务器返回的json数据,例如:

简书首页json数据示例

数据请求

数据请求的方式一般有两种:GET方法和POST方法。我们也可以通过Chrome浏览器来捕获我们访问一个浏览器时的所有请求。这里以简书主页为例,打开Chrome浏览器开发者工具(F12),切换到Network选项,在地址栏输入http://www.jianshu.com/, 选择XHR类型,可以看到一条请求的内容,打开Headers,在General中可以看到请求方式为GET方式,

其中的Request Headers便是我们访问这个网页时的请求数据,如下图。

Request Headers

这个Headers可以用Python中的字典来表示,包含了用户请求的一些信息,例如编码、语言、用户登陆信息、浏览器信息等。

下面还有一个Query String Parameters,这里面包含了用户请求的一些参数,也是请求数据的一部分。

利用requests库请求数据

利用Python构建数据请求的方式有很多,在python3中,主要有urllib和requests两个类库可以实现该功能。urllib是官方标准库,其官方文档传送门。这里我们主要介绍第三方库requests,它是基于urllib编写的,比urllib用起来更加便捷,可以节约时间。

requests安装方法:

$ pip install requests

利用requests构建数据请求主要方式:

import requests

req = request.get(url)

或者

import requests

req = requests.post(url)

其中,get()与post()中都可以添加headers、params等参数,以字典的形式传递即可。一般来说,简单的网页通过传入url数据即可成功请求数据。不过一些网站采用了反爬虫机制,需要我们传入headers及params等参数,以模拟浏览器访问、用户登陆等行为,才可以正常请求数据。

利用webdriver请求数据

webdriver是一个用来进行复杂重复的web自动化测试的工具,能够使用chrome、firefox、IE浏览器进行web测试,可以模拟用户点击链接,填写表单,点击按钮等。因此,相对于requests库来说,webdriver在模拟浏览器鼠标点击滑动等事件上有着天然的优势,并且真实模拟了浏览器的操作,不易被反爬虫机制发现,因此是一个很好用的爬虫工具。当然,其缺点在于速度较慢,效率不高。

webdriver安装:

$ pip install selnium

除了安装selnium库,webdriver的运行还需要进行浏览器驱动的配置。Chrome、火狐和IE浏览器都有其配置方式,具体方法查看链接http://blog.163.com/yang_jianli/blog/static/1619900062014102833427464/。

这里我们以IE浏览器为例,做一个简单的示范:

from selenium import webdriver

import os

iedriver = "IEDriverServer.exe"

os.environ["webdriver.ie.driver"] = iedriver

driver = webdriver.Ie(iedriver)

如此,IE浏览器配置完毕,其中"IEDriverServer.exe"是IE浏览器驱动的存储路径。

于是,我们我们访问简书网主页数据只一步:

driver.get(http://www.jianshu.com/)

数据解析

使用requests请求下来的数据,可以利用.text()方法或者.content()方法访问,对于文本请求,二者并无太大差别,主要在于编码问题。具体用法可以参考官方文档,这里不再赘述。使用webdriver请求下来的数据可以用.page_source属性获取。请求下来的数据一般包含了大量的网页源代码,如何将其解析以提取出我们想要的内容呢?

html类型数据解析

html语言即超文本标记语言,它是由一个个html标签构成的,是结构化的语言,因此很容易从中匹配提取信息。这种类型的数据解析的方法有很多,比如利用正则表达式,按照html标签的结构进行字符串匹配,或则利用lxml库中的xpath方法使用xpath路径定位到每一个节点、也有类似jQuery的PyQuery方法。这里我们主要介绍BeautifulSoup方法。

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。该介绍来源于其官方中文文档,传送门。利用BeautifulSoup我们能够将html字符串转化为树状结构,并非常快速地定位到每一个标签。

目前版本是BeautifulSoup4

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值