python3使用scrapy生成csv文件代码示例


Posted in Python onDecember 28, 2017

去腾讯招聘网的信息,这个小项目有人做过,本着一个新手学习的目的,所以自己也来做着玩玩,大家可以参考一下。

这里使用的是调用cmdline命令来生成csv文件,而不是importcsv模块。

from scrapy import cmdline 
cmdline.execute("scrapy crawl field -o info.csv -t csv".split())

这段代码我保存在一个自建的.py文件中,然后在主文件中调用这个模块,这样就不用每次在cmd中敲命令了,大家可以使用这种方法我觉得很方便的。

进入正题(获取腾讯招聘网的信息http://hr.tencent.com/position.php):

python3使用scrapy生成csv文件代码示例

保存的csv文件内容:

python3使用scrapy生成csv文件代码示例

我们需要获取的数据首先应该使用scrapy的items容器记录下来:

import scrapy 
 
class GetItem(scrapy.Item): 
  name = scrapy.Field()    #招聘单位 
  genre = scrapy.Field()   #招聘类型 
  number = scrapy.Field()   #招聘人数 
  place = scrapy.Field()   #招聘地点 
  time = scrapy.Field()    #招聘时间

以上为我们等一下需要获取的信息

然后我们新建spider文件来编写爬去网站的代码:

# _*_ coding:utf-8 _*_ 
import scrapy 
from scrapy.http import Request 
from time import sleep 
import os 
import sys 
sys.path.append("D:\PYscrapy\get_Field") #我使用这种路径添加的方式来调用GetItem函数和main函数 
from get_Field.items import GetItem 
import main  #main函数开头就说了两行调用程序的代码,你也可以在cmd中使用scrapy crawl field -o info.csv -t csv来调用。主要是方便 
 
class Tencentzhaopin(scrapy.Spider): 
  name = "field"  #这个程序要执行的唯一标识名 可以自己设置 
  start_urls = ["http://hr.tencent.com/position.php?&start=0#a"] #首页网址 
  url = "http://hr.tencent.com/" #由于有翻页操作所以我们设置翻页前缀,等一下获取后缀 
  count = 0 
  names = []    #这五个列表记录我们获取的信息 
  genres = [] 
  numbers = [] 
  places = [] 
  times = [] 
  filename = "data.txt"  #保存的文件名 
  if os.path.exists(filename) == True:  #判断这个文件是否已经存在文件夹中,有就移除掉。 
    os.remove(filename) 
 
  def parse(self,response): 
    self.count += 1 #设置我们需要爬去多少页,不设置的话会有几百页需要爬取 
    name = response.xpath('//table//td[@class="l square"]//a//text()').extract() 
    #通过xpath方法获取我们需要的内容,再使用extract()抽取器获取到 
    for i in name:    #利用循环将每一次的内容存入我们上面设置的列表中去,方便后面存入csv文件(下面4个类似) 
      self.names.append(i) 
    genre = response.xpath('//table//tr[not(@class="h")]//td[2][not(@align="center")]//text()').extract() 
    for i in genre: 
      self.genres.append(i) 
    number = response.xpath('//table//tr[not(@class="h")]//td[3][not(@align="center")]//text()').extract() 
    for i in number: 
      self.numbers.append(i) 
    place = response.xpath('//table//tr[not(@class="h")]//td[4][not(@align="center")]//text()').extract() 
    for i in place: 
      self.places.append(i) 
    time = response.xpath('//table//tr[not(@class="h")]//td[5][not(@align="center")]//text()').extract() 
    for i in time: 
      self.times.append(i) 
 
    new_url = response.xpath('//*[@id="next"]//@href').extract() 
    #前面我们说过需要翻页操作,所以这里是获取到翻页的后缀 
    new_url = self.url+new_url[0] #再与前缀结合,获取到一个完整的下一页链接 
    sleep(0.5) #我们设置一个翻页的时间,太快了不好。。。。(我是这样想的) 
 
    #下面就是信息存入items容器 
    for i in range(len(self.genres)): #for循环列表的长度,获取到所有信息 
      info = GetItem()  #实例一个类info用来保存数据 
      info["name"] = self.names[i]    #将每一个属性列表中的每一个数据保存依次保存到info中去 
      info["genre"] = self.genres[i] 
      info["number"] = self.numbers[i] 
      info["place"] = self.places[i] 
      info["time"] = self.times[i] 
      yield info #这个yield注意了,嗯,这就很舒服了 
      #我们将每一次保存的数据返回,但是返回了我们还需要程序继续执行,所以使用yield函数返回后继续执行 
 
    if self.count<=20: 
      yield Request(url=new_url,callback=self.parse) 
      #如果满足20页以内,我们callback返回下一页的链接继续到parse这个默认函数,

以上是spider中的代码。

其实实现这个代码不难,唯一有一点小疑惑的地方可能就是第一个yield的使用,一开始我是使用调用一个新的函数,然后在里面实现值的返回,但是麻烦还有一点小问题,所以这里我们就是用这种简单的方式就行了,yield将每次循环的数据返回,返回后再继续执行循环。

总结

以上就是本文关于python3使用scrapy生成csv文件代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python常用随机数与随机字符串方法实例
Apr 09 Python
python监控文件或目录变化
Jun 07 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
Sanic框架配置操作分析
Jul 17 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
python实现logistic分类算法代码
Feb 28 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
Jun 30 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 #Python
scrapy爬虫实例分享
Dec 28 #Python
Python解决N阶台阶走法问题的方法分析
Dec 28 #Python
Python实现嵌套列表去重方法示例
Dec 28 #Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 #Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 #Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 #Python
You might like
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Python json读写方式和字典相互转化
2020/04/18 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
毕业生个人求职信范例分享
2013/12/17 职场文书
自动化职业生涯规划书范文
2014/01/03 职场文书
党员大会主持词
2014/04/02 职场文书
企业文化口号
2014/06/12 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
房产公证委托书范本
2014/09/20 职场文书
法院授权委托书格式
2014/09/28 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers