本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visual studio一劳永逸,如果报错缺少前置依赖,就先安装依赖) 本篇主要对scrapy生成爬虫项目做一个基本的介绍 tips:在任意目录打开cmd的方式可以使用下面这两种方式 shift + 右键打开cmd(window10的powershell你可以简单理解为cmd升级版) 在路径框直接输入cmd…
在上篇中,分析了拉勾网需要跟进的页面url,本篇开始进行代码编写. 在编写代码前,需要对scrapy的数据流走向有一个大致的认识,如果不是很清楚的话建议先看下:scrapy数据流 本篇目标:让拉勾网爬虫能跑起来 分析:我们要通过拉勾网的起始url,通过设定一些规则,跟进我们需要的网页,提取出详情页的某些字段,如:岗位,薪酬,公司名称,地址等 编写lagou_c.py文件 原始代码如下: # -*- coding: utf-8 -*- import scrapy from scrapy.linke…
上一篇完成了随机UA和随机代理的设置,让爬虫能更稳定的运行,本篇将爬取好的数据进行存储,包括本地文件,关系型数据库(以Mysql为例),非关系型数据库(以MongoDB为例). 实际上我们在编写爬虫rules规则的时候,做了很多的限定,而且没有对翻页进行处理,所以最终提取的信息数量比较少,经我的测试,总共只有4k多条职位.如果要进行数据分析的话,数量量必须要足够,因此我们先将爬虫规则进行修改. 修改lagou_c.py文件rules rules = ( Rule(LinkExtractor(al…
网站结构分析: 四个大标签:首页.公司.校园.言职 我们最终是要得到详情页的信息,但是从首页的很多链接都能进入到一个详情页,我们需要对这些标签一个个分析,分析出哪些链接我们需要跟进. 首先是四个大标签,鼠标点击进入后可以发现首页.公司.校园,这三个包含有招聘职位 1.首先是对首页的分析 首页正文部分包括:搜索栏(含热门搜索).职业方向标签(java.php...).热门职位.热门公司 搜索栏:搜索标签的岗位数量较少,我们要做全站数据爬取的话,不跟进这个标签 职业方向标签:这个标签指向的url都是…
上一篇中已经分析了详情页的url规则,并且对items.py文件进行了编写,定义了我们需要提取的字段,本篇将具体的items字段提取出来 这里主要是涉及到选择器的一些用法,如果不是很熟,可以参考:scrapy选择器的使用 依旧是在lagou_c.py文件中编写代码 首先是导入LagouItem类,因为两个__init__.py文件的存在,所在的文件夹可以作为python包来使用 from lagou.items import LagouItem 编写parse_item()函数(同样为了详细解释…
上篇我们实现了分布式爬取,本篇来说下爬虫的部署. 分析:我们上节实现的分布式爬虫,需要把爬虫打包,上传到每个远程主机,然后解压后执行爬虫程序.这样做运行爬虫也可以,只不过如果以后爬虫有修改,需要重新修改好代码后,重新打包上传然后执行(当然你愿意每台登上去后修改代码也行).本篇我们使用scrapd来进行部署. 使用scrapyd来部署爬虫大体只需要几步: 在需要运行爬虫的主机上安装scrapyd,并且启动scrapyd服务 使用scrapy-client把项目打包成egg文件,部署到scrapyd…
上篇我们实现了数据的存储,包括把数据存储到MongoDB,Mysql以及本地文件,本篇说下分布式. 我们目前实现的是一个单机爬虫,也就是只在一个机器上运行,想象一下,如果同时有多台机器同时运行这个爬虫,并且把数据都存储到同一个数据库,那不是美滋滋,速度也得到了很大的提升. 要实现分布式,只需要对settings.py文件进行适当的配置就能完成. 文档时间:官方文档介绍如下: Use the following settings in your project: # Enables schedul…
上篇已经对数据进行了清洗,本篇对反爬虫做一些应对措施,主要包括随机UserAgent.随机代理. 一.随机UA 分析:构建随机UA可以采用以下两种方法 我们可以选择很多UserAgent,形成一个列表,使用的时候通过middleware获取到settings.py文件中的配置,然后进行随机选择 使用第三方库fake-useragent,这个库可以方便的生成一个随机UA,使用起来也很方便 本篇我们使用第二种方式来构建随机UA 安装第三方库fake_useragent,使用命令pip install…
上一篇我们已经让代码跑起来,各个字段也能在控制台输出,但是以item类字典的形式写的代码过于冗长,且有些字段出现的结果不统一,比如发布日期. 而且后续要把数据存到数据库,目前的字段基本都是string类型,会导致占用空间较多,查询时速度会较慢,所以本篇先对目前已写好的代码进行适当优化. 本篇目的:使用item loader以及processor对代码进行优化,对字段数据进行清洗 1.修改一下items.py文件的字段 我们对工资和工作经验字段进行分割让其更适合数据库存储: import scra…
上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要去看之前的文章,代码是在之前的基础上修改的 [图文详解]scrapy爬虫与动态页面--爬取拉勾网职位信息(1) 开始 还是回到我们熟悉的页面,这里,我们熟练的打开了Newwork标签,我们点下一页,看会出来什么结果 果然还是跳出来一个页面,但是貌似..网址一样,我打开看一下 和之前不一样也! 一样的…
request.Request类 如果想要在请求的时候添加一个请求头(增加请求头的原因是,如果不加请求头,那么在我们爬取得时候,可能会被限制),那么就必须使用request.Request类来实现,比如要增加一个User-Agent, url='https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=' headers = { 'User-Agent' : 'Mozilla/5.0 (Windo…
简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳.杭州.西安.成都7个城市的数据,分别以前端.PHP.java.c++.python.Android.ios作为关键词进行爬取,爬到的数据以json格式储存到本地,为了方便观察,我将数据整理了一下供大家参考 数据结果 上述数据为3月13日22时爬取的数据,可大致反映各个城市对不同语言的需求量. 爬取过程展示 控制并发进行爬取 爬取到的数据文件 json数据文件 爬虫程序 实现思路 请求拉钩网的…
目录 前言 XPath的使用方法 XPath爬取数据 后言 @(目录) 前言 本章同样是解析网页,不过使用的解析技术为XPath. 相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用的一种解析方式 , 并且更加的符合我们之前的一个逻辑思维,不过看情况吧,看各位准备怎么用吧. XPath的使用方法 同样的先下载lxml插件,并且导入里面的etree """ XPath的学习 """ from lxml import etree #…
1.selenium Selenium 本是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.而这一特性为爬虫开发提供了一个选择及方向,由于其本身依赖于浏览器,所以使用Python的selenium库的前提是:需要下载相应的浏览器驱动程序,这里附上Chromedriver的下载地址:chromedriver:(64位的向下兼容,) 2.code: 说明: 1.多线程爬取(producer&consumer modal): 2.结果集的存取文件类型…
其实很简单,却因为一些小问题,折腾不少时间,简要记录一下,以备后需. >> scrapy startproject lagou >> cd lagou >> scrapy gen lagou_jd www.lagou.com 定义item 在items.py中继续完善定义: # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: #…
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…
import requestsimport mathimport pandas as pdimport timefrom lxml import etree url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false'headers = { 'Accept': "application/json, text/javascript, */*; q=0.01", '…
如何进行APP抓包 首先确保手机和电脑连接的是同一个局域网(通过路由器转发的网络,校园网好像还有些问题). 1.安装抓包工具Fiddler,并进行配置 Tools>>options>>connections>>勾选allow remote computers to connect 2.查看本机IP 在cmd窗口(win+R快捷键),输入ipconfig,查看(以太网)IP地址. 3.配置手机端. 手机连网后(和电脑端同一局域网),打开手机浏览器并访问:http://ip…
分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 官方主页: http://www.scrapy.org/ 中文文档:Scrapy 0.22 文档 GitHub项目主页:https://github.com/scrapy/scrapy Scrapy 使用了 Twisted 异步网络库来处理网络通讯.整体架构大致如下(注:图片来自…
一.使用的技术 这个爬虫是近半个月前学习爬虫技术的一个小例子,比较简单,怕时间久了会忘,这里简单总结一下.主要用到的外部Jar包有HttpClient4.3.4,HtmlParser2.1,使用的开发工具(IDE)为intelij 13.1,Jar包管理工具为Maven,不习惯用intelij的同学,也可以使用eclipse新建一个项目. 二.爬虫基本知识 1.什么是网络爬虫?(爬虫的基本原理) 网络爬虫,拆开来讲,网络即指互联网,互联网就像一个蜘蛛网一样,爬虫就像是蜘蛛一样可以到处爬来爬去,把…
Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约,影响日后借书,而自己又懒得总是登录到学校图书馆借阅系统查看,于是就打算写一个爬虫来抓取自己的借阅信息,把每本书的应还日期给爬下来,并写入txt文件,这样每次忘了就可以打开该txt文件查看,每次借阅信息改变了,只要再重新运行一遍该程序,原txt文件就会被新文件覆盖,里面的内容得到更新. 用到的技术:…
Scrapy框架它能够帮助提升爬虫的效率,从而更好地实现爬虫.Scrapy是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含request异步调度和处理.下载器(多线程的Downloader).解析器selector和twisted(异步处理)等.对于网站的内容爬取,其速度非常快捷. 下面将使用Scrapy框架抓取某证券网站A股行情,爬取过程分为以下五步: 一:创建Scrapy爬虫项目: 二:定义一个item容器: 三:定义settings文件进行基本爬虫设置: 四:编…
gecco爬虫 如果对gecco还没有了解可以参看一下gecco的github首页.gecco爬虫十分的简单易用,JD全部商品信息的抓取9个类就能搞定. JD网站的分析 要抓取JD网站的全部商品信息,我们要先分析一下网站,京东网站可以大体分为三级,首页上通过分类跳转到商品列表页,商品列表页对每个商品有详情页.那么我们通过找到所有分类就能逐个分类抓取商品信息. 入口地址 http://www.jd.com/allSort.aspx,这个地址是JD全部商品的分类列表,我们以该页面作为开始页面,抓取J…
老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就可以了.scrapy 就是一个很棒的框架.最近在看崔庆才老师的博客http://cuiqingcai.com/ 的时候,发现了几个写的非常好的scrapy教程(http://cuiqingcai.com/4380.html,http://cuiqingcai.com/3952.html等,还有很多,…
Python里scrapy爬虫 scrapy爬虫,正好最近成都房价涨的厉害,于是想着去网上抓抓成都最近的房价情况,顺便了解一下,毕竟咱是成都人,得看看这成都的房子我以后买的起不~ 话不多说,进入正题: 任务 抓取链家网(成都)的所有新房以及二手房价格.位置相关信息. 实验流程 1.确定抓取目标. 2.制定抓取规则. 3.'编写/调试'抓取规则. 4.获得抓取数据 1.确定抓取目标 1.1新房抓取目标 我们看到在成都楼盘列表页面,有楼盘名字.均价(每平方)和所属行政区,非常好,这正是我们想要抓取的…
xlwt 1.3.0 xlwt 文档 xlrd 1.1.0 python操作excel之xlrd 1.Python模块介绍 - xlwt ,什么是xlwt? Python语言中,写入Excel文件的扩展工具. 相应的有扩展包xlrd,专门用于excel读取. 可以实现指定表单.指定单元格的写入. 2.xlwt使用 导入模块 import xlwt 创建workbook,即创建excel,后来要进行保存 workbook = xlwt.Workbook(encoding = 'utf-8') 创建…
抓取四川大学公共管理学院官网(http://ggglxy.scu.edu.cn)所有的新闻咨询. 实验流程 1.确定抓取目标.2.制定抓取规则.3.'编写/调试'抓取规则.4.获得抓取数据 1.确定抓取目标 我们这次需要抓取的目标为四川大学公共管理学院的所有新闻资讯.于是我们需要知道公管学院官网的布局结构. 微信截图_20170515223045.png 这里我们发现想要抓到全部的新闻信息,不能直接在官网首页进行抓取,需要点击"more"进入到新闻总栏目里面. Paste_Image.…
目标说明 利用scrapy抓取中新网新闻,关于自然灾害滑坡的全部国内新闻:要求主题为滑坡类新闻,包含灾害造成的经济损失等相关内容,并结合textrank算法,得到每篇新闻的关键词,便于后续文本挖掘分析. 网站分析 目标网站:http://sou.chinanews.com/advSearch.do 结合中新搜索平台的高级搜索的特点,搜索关键词设置为:滑坡 经济损失(以空格隔开),设置分类频道为国内,排序方式按照相关度.得到所有检索到的新闻如下: 共1000多条数据. 分析网站特点发现,给请求为异…
一:selenium 库 selenium 每次模拟浏览器打开页面,xpath 匹配需要抓取的内容.可以,但是特别慢,相当慢.作为一个对技术有追求的爬虫菜鸡,狂补了一些爬虫知识.甚至看了 scrapy 框架,惊呆了,真棒! 网上很多关于 selenium 库的详细介绍,这里略过此方法. 二: requests 库 编写一个爬虫小脚本,requests 库极为方便.接下来进入正题,如何抓取 MOOC 中国上课程的讨论内容! 1. 分析网页数据 打开你需要抓取数据的课程页面,点击讨论区之后页面加载讨…
我们要用scrapy抓取企业名录网站的企业信息,并且保存在mysql数据库中,数据大概是22万条,我们用scrapy抓取. 第一步,现在item中定义好要抓取的字段 import scrapy class RepairSpiderItem(scrapy.Item): city_name = scrapy.Field() area_name = scrapy.Field() company_name = scrapy.Field() company_address = scrapy.Field()…