python爬虫 爬取网站数据

news/2024/5/17 12:11:57/文章来源:https://blog.csdn.net/weixin_33957648/article/details/92407298

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

现在我们写一个爬取某招聘网站上北京开发岗位招聘信息的爬虫程序

爬取数据前,我们需要创建一个scarpy框架,我个人喜欢通过Anaconda Prompt创建,简单 便捷

Anaconda Prompt下载地址:https://www.anaconda.com/download/

下载界面有两个版本,选择本机python的版本下载安装就可以了。

步入正题,首先我们开始通过Anaconda Prompt创建一个爬虫

205308_wkCd_3764483.jpg

205334_c8jA_3764483.jpg

完成以上步骤后,我们就可以在pycharm里编写爬虫代码了

首先,用pycharm编辑器打开我们刚刚创建的python3_zhilian(步骤:打开pycharm--点击左上角File--点击open--找到python3_zhilian点击OK,这一步需要注意的是 直接打开python3_zhilian文件夹就可以)

210154_Ha4X_3764483.jpg

首先我们详细了解一下这里面每个目录的作用:

  • scrapy.cfg  项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)

  • items.py    设置数据存储模板,用于结构化数据,如:Django的Model

  • pipelines    数据处理行为,如:一般结构化的数据持久化

  • settings.py 配置文件,如:递归的层数、并发数,延迟下载等

  • spiders      爬虫目录,如:创建文件,编写爬虫规则

接下来我们主要做的就是对蜘蛛的修改

先打开spiders下的job.py进行修改,详细内容已经写在注释里,见下图代码

220220_jquk_3764483.jpg

接下来我们开始写业务,业务封装的数据我们需要保存在一个实体里

在这里,我们只爬取职位名称、公司名称、职位月薪、工作地点和职位要求等5个字段

打开items.py,添加如下代码:

221857_Ltia_3764483.jpg

下面我们需要创建三个管道,将数据分别保存在关系型数据MySQL内,Kafka内,还有一条管道是做分词用

打开pipelines.py,实现如下代码

222959_rixZ_3764483.jpg

要启动这三个管道,还需要在settings.py下进行配置

 

至此,系统每个环节所需要的必须产物都已经有了,但是实现代码还没有写,所以下面我们开始实现,从蜘蛛开始,打开job.py并实现以下代码:(详细的步骤以注释形式随代码附上)

# -*- coding: utf-8 -*-
import scrapy#导入scrapy模块class JobSpider(scrapy.Spider):#定义类(类继承scrapy.Spider)name = 'job'#类的名字# allowed_domains = ['zhilian.com']#只允许在这个网站爬,这个域我们没有用,直接删除即可start_urls = ['http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw=%E5%BC%80%E5%8F%91&sm=0&p=1']#爬虫的起始网址def parse(self, response):#解析# 通过CSS选择器和xpath来解析内容#1、找到招聘职位链接并跟踪#2、找到‘下一页’的链接并跟踪zwmcs = response.css('td.zwmc')#获得所有的职位for zw in zwmcs:href = zw.css(' a::attr("href")').extract_first()#获得所有职位的链接yield response.follow(href, self.detail)#response.follow方法为了实现跟随爬取next_href = response.css('li.pagesDown-pos>a::attr("href")').extract_first()#获得‘下一页’的链接if next_href is not None:#判断如果next_href不为空,执行跟随爬取yield response.follow(next_href, self.parse)def detail(self, response):zwmc = response.css('div.inner-left.fl>h1::text').extract_first()print(zwmc)

注:代码内的.css()括号里的内容就是某招聘里HTML的class名称

接下来我们可以运行一下试试:

1、可以在Anaconda Prompt下输入scrapy crawl python3_zhilian启动爬虫

2、第二种方法,也是我比较喜欢的一种方法,在pycharm里python3_zhilian里新建一个.py文件,名字任意起,我创建的名称为start,代码如下(注:启动蜘蛛只需点击启动start)

004027_LAJe_3764483.jpg

运行后我们可以看到已经成功爬取到数据了

004256_cWSV_3764483.jpg

接下来我们将其余的四个字段全部补充完整,还是在job.py中编写代码,代码如下(详细的步骤以注释形式随代码附上)

012739_r2kE_3764483.jpg

补充完毕后,再次启动start,我们就可以爬取到某网站招聘信息上的职位名称、公司名称、职位月薪、工作地点和职位要求

由于我们在start.py下写了一个-o job.csv,所以当程序运行结束后,python3_zhilian目录下会自动生成job.csv文件,并将爬取到的数据存储到job.csv内

  • 013948_H7Js_3764483.jpg013952_bbJV_3764483.jpg

 

 

 

转载于:https://my.oschina.net/u/3764483/blog/1817735

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_818126.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装翻译_科研利器 | NCBI网站影响因子与网页翻译插件安装指南

小编说在平时的科研工作中,善用各类工具能帮助我们提升科研效率,而浏览器的插件与各类软件相比,更加便捷、并且不会占用电脑内存。今天推荐两款浏览器增强插件,提高效率妥妥的~Scholarscope1、进入官网https://www.scholarscope.c…

python3利用socket查看各大网站所用的WEB服务器程序,看看那个用得最多。

2019独角兽企业重金招聘Python工程师标准>>> 利用python发送haeder /然后,读取返回的头的信息,看看该网站用的是什么WEB服务器程序。 今天早上看到别人用java写了一个这样的程序,我用就python也现实一个, 本来想把nginx不用版本的…

bootstrap+flask+mysql实现网站查询

之前那篇文章是flaskredis的,如果用flaskmysql怎么实现呢?创建数据库:CREATE DATABASE web12306 DEFAULT CHARACTER SET utf8;创建表:CREATE TABLE web12306 (user_email varchar(100) NOT NULL DEFAULT ,user_pass varchar(100)…

浅谈web网站架构演变过程(转)

前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理阶段一、单机构建网站 网站…

怎么让网站在本地支持SSL?

打开vs,点击项目,查看属性,打开ssl 如果有什么危险提示,就允许 右击项目,选择属性 运行项目 转载于:https://www.cnblogs.com/dunitian/p/5248957.html

iptables防火墙只允许指定ip连接指定端口、访问指定网站

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!需要开80端口,指定IP和局域网 下…

对网站中的js,css文件进行打包

一,为什么要用smarty进行打包 apache中也有给js,css这样的静态文件进行打包压缩的模块,但是本文所说的不是以这种方式进行的打包,而是和smarty结合的方式来把网站中的js,css文件进行打包。 为什么要进行打包呢,主要目的是为了合理…

网站云服务器应该记入哪个科目,云服务器费应该计入什么科目

云服务器费应该计入什么科目 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。本文介绍了主机迁移服务SMS各特性版本的功能发布和对应…

H5响应式设计可以为你网站带来什么?

“网站”是你在互联网上的形象;“网站”是你在网络上“店面”;“网站”更是你在互联网上宣传自己、宣传产品和服务的重要媒介。网站建设成为了互联网上必不可少的一道工序,不管你是公司企业进行“互联网”也好,还是个人进行互联网…

AMD网站更新:披露Radeon M400移动GPU产品线

AMD刚刚更新了自家网站并加入了Radeon M400系列笔记本GPU阵容,尽管并没有为此特别召开一场发布会,但参数还是值得我们留意一番。我们先从R9级别的新品说起,其包含了R9 M485X、R9 M470X、R9 M470三款型号,流处理器分别为2048、896、…

linux快速排序,快速排序_Linux编程_Linux公社-Linux系统门户网站

思想快速排序(quick sort)由C. A. R. Hoare在1962年提出。它的基本思想是:选择一个基准数(枢纽元),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都小于或等于基准数,另外一部分的所有数据都要大于或等于基…

php网站漏洞挖掘,零基础学习挖掘PHP网站漏洞

教程介绍本套课程,分为三个阶段:第一阶段:基础篇 学习PHP开发的基础知识,对PHP常见的漏洞进行分析,第二阶段:进阶篇 实战PHP漏洞靶场,了解市面上的PHP主流网站开发技术,并对市面上的…

pypark hive 开启动态分区_网站PV分析(Hive)

之前我们做过《java mapreduce实现网站PV分析》,这次我们可以用hive分析一些需求指标提出需求:统计分析24小时各个时段的pv和uv分析:(1) pv统计总的浏览量 count(url)(2) uv统计去重 count(distinct guid)(3) 获取时间字段,日期和…

利用huffman编码对文本文件进行压缩与解压_宝塔面板LNMP开启Brotli压缩,可提高网站加载速度...

说明:Brotli是Google推出的开源压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率,性能也比我们目前常见的Gzip高17-25%,可以帮我们更…

js修改json文件_静态网站生成器之React框架Gatsby (三)连接json数据源

前面一篇,我们讲到了替换首页的模板,用antd的首页模板页面。这一篇,我们将使用gatsby的数据源功能,把首页的一些数据从模板页面的js中剥离出来。这里我们将使用json文件作为gatsby的数据源,所以我们首先需要安装依赖的…

小虾视频网站广告屏蔽器 V 5.0

本软件用于屏蔽一些视频网站的广告,也具备屏蔽一些恶意网站的作用!如过你发现在电脑正常的情况下有些网友打开开,那是因为屏蔽的原因,只要单击一键还原广告就OK了!~打开软件后不要老是点击不然容易出错!要是…

当前网站设计风格的发展趋势!

这篇文章翻译至:[url]http://www.webdesignfromscratch.com/current-style.cfm[/url]它总结了一些当前网站设计风格的发展趋势。但是我得先提一句,它说的都是西方网站,未必适合我们中国网站的情况和中国网民的审美观。如果能给你一点点参考和…

网站地图(sitemap)在线生成

网站地图在线生成其实也就是sitemap在线生成,在线生成网站地图(sitemap)的方式其实就两种: 一是、网站后台有sitemap网站地图生成功能; 二是、三方工具从一个入口地址,实现全站地址抓取分析。 如果是网站…

在线地图制作网站

网站地图Sitemap的好处是很多的,对SEO而言,网站地图起到的作用是快速提交链接,加速收录。当网站的层级关系很深的时候,没有网站地图,完全靠搜索引擎比如百度自己去抓取链接,速度是很慢的。所以需要主动让百…