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

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

这里使用的是调用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):

保存的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文件代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • Python的Scrapy爬虫框架简单学习笔记

     一.简单配置,获取单个网页上的内容. (1)创建scrapy项目 scrapy startproject getblog (2)编辑 items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html from scrapy.item import

  • Python的爬虫程序编写框架Scrapy入门学习教程

    1. Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 Scrapy 使用了 Twisted异步网络库来处理网络通讯.整体架构大致如下 Scrapy

  • 讲解Python的Scrapy爬虫框架使用代理进行采集的方法

    1.在Scrapy工程下新建"middlewares.py" # Importing base64 library because we'll need it ONLY in case if the proxy we are going to use requires authentication import base64 # Start your middleware class class ProxyMiddleware(object): # overwrite process

  • 零基础写python爬虫之使用Scrapy框架编写爬虫

    网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便.使用Scrapy可以很方便的完成网上数据的采集工作,它为我们完成了大量的工作,而不需要自己费大力气去开发. 首先先要回答一个问题. 问:把网站装进爬虫里,总共分几步? 答案很简单,四步: 新建项目 (Project):新建一个新的爬虫项目 明确目标(Item

  • 深入剖析Python的爬虫框架Scrapy的结构与运作流程

    网络爬虫(Web Crawler, Spider)就是一个在网络上乱爬的机器人.当然它通常并不是一个实体的机器人,因为网络本身也是虚拟的东西,所以这个"机器人"其实也就是一段程序,并且它也不是乱爬,而是有一定目的的,并且在爬行的时候会搜集一些信息.例如 Google 就有一大堆爬虫会在 Internet 上搜集网页内容以及它们之间的链接等信息:又比如一些别有用心的爬虫会在 Internet 上搜集诸如 foo@bar.com 或者 foo [at] bar [dot] com 之类的东

  • Python爬虫框架Scrapy实战之批量抓取招聘信息

    网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便- Scrapy 使用wisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求.整体架构如下图所示: 绿线是数据流向,首先从初始URL 开始,Scheduler 会将其

  • 实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

    安装部署Scrapy 在安装Scrapy前首先需要确定的是已经安装好了Python(目前Scrapy支持Python2.5,Python2.6和Python2.7).官方文档中介绍了三种方法进行安装,我采用的是使用 easy_install 进行安装,首先是下载Windows版本的setuptools(下载地址:http://pypi.python.org/pypi/setuptools),下载完后一路NEXT就可以了. 安装完setuptool以后.执行CMD,然后运行一下命令: easy_i

  • 使用Python的Scrapy框架编写web爬虫的简单示例

    在这个教材中,我们假定你已经安装了Scrapy.假如你没有安装,你可以参考这个安装指南. 我们将会用开放目录项目(dmoz)作为我们例子去抓取. 这个教材将会带你走过下面这几个方面: 创造一个新的Scrapy项目 定义您将提取的Item 编写一个蜘蛛去抓取网站并提取Items. 编写一个Item Pipeline用来存储提出出来的Items Scrapy由Python写成.假如你刚刚接触Python这门语言,你可能想要了解这门语言起,怎么最好的利用这门语言.假如你已经熟悉其它类似的语言,想要快速

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

    去腾讯招聘网的信息,这个小项目有人做过,本着一个新手学习的目的,所以自己也来做着玩玩,大家可以参考一下. 这里使用的是调用cmdline命令来生成csv文件,而不是importcsv模块. from scrapy import cmdline cmdline.execute("scrapy crawl field -o info.csv -t csv".split()) 这段代码我保存在一个自建的.py文件中,然后在主文件中调用这个模块,这样就不用每次在cmd中敲命令了,大家可以使用这

  • C# 解析 Excel 并且生成 Csv 文件代码分析

    今天工作中遇到一个需求,就是获取 excel 里面的内容,并且把 excel 另存为 csv,因为本人以前未接触过,所以下面整理出来的代码均来自网络,具体参考链接已丢失,原作者保留所有权利! 例子: 复制代码 代码如下: using System; using System.Data; namespace ExportExcelToCode {     class ExcelOperater     {         public void Operater()         {      

  • 利用PHP生成CSV文件简单示例

    前言 csv 文件其实和excel文件一样,都是表格类型.但PHP生成csv要比生成excel文件要简单的多,生成csv文件其实就是把以 , 号为分割符的字符串存成 .csv为扩展名的文件. 因为逻辑不难,具体请看下面的代码和注释. <?php /** * Created by PhpStorm. * User: chenyanphp@qq.com * Date: 2016/12/21 0021 * Time: 下午 12:08 */ // 头部标题 $csv_header = ['名称','性

  • Python拆分大型CSV文件代码实例

    这篇文章主要介绍了Python拆分大型CSV文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @FileName :Test.py # @Software PyCharm import os import pandas as pd # filename为文件路径,file_num为拆分后的文件行数 # 根据是否有表头执行不同程序,默认有表头

  • java导出生成csv文件的方法

    首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分隔的,对比如下图: txt中显示: 修改文件后缀为csv后显示如下: 在java中我们一般使用poi操作excel,导入,导出都可以,但是poi很消耗内存,尤其在导出时,这个时候我们其实可以选择导出生成csv文件,因为其跟文本差不多,所以效率很高. 简单写了一个实现类,代码如下: /** * * 导出生成csv格式的文件 * @author ccg * @param titles

  • C# 利用PdfSharp生成Pdf文件的示例

    目录 PdfSharp下载 涉及知识点 文档示例图 核心代码 PdfSharp一款开源的用于创建,操作PDF文档的.Net类库,本文以一个简单的小例子,简述如何通过PdfSharp进行创建PDF文档,仅供学习分享使用,如有不足之处,还请指正. PdfSharp下载 在本例中,主要通过NuGet包管理器进行下载安装,目前PdfSharp版本为v1.5.0.5147,如下所示: 涉及知识点 在生成PDF文档过程中,主要知识点如下: PdfDocument : 表示一个PDF文档对象,调用save方法

  • caffe的python接口生成deploy文件学习示例

    目录 如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和test.prototxt文件差不多,只是头尾不相同而也.deploy文件没有第一层数据输入层,也没有最后的Accuracy层,但最后多了一个Softmax概率层. 这里我们采用代码的方式来自动生成该文件,以mnist为例. deploy.py # -*- coding: utf-8 -*- from caffe import layers as L,params as P,to_pro

  • Java编程利用socket多线程访问服务器文件代码示例

    这篇文章将向大家展示Java编程利用socket多线程访问服务器文件代码示例,如果您想先了解Java多线程socket编程的基础知识,可以看下这篇文章:Java多线程编程实现socket通信示例代码. 接下来进入正文,我们看看利用socket多线程访问服务器代码: ServerMain.java package com.ysk.webServer; import java.io.File; import java.io.IOException; import java.net.ServerSoc

  • Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputS

  • java IO流将一个文件拆分为多个子文件代码示例

    文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位,对文件进行分割或合并. 看下基本思路: 如果有一个大文件,指定分割大小后(比如:按1M切割) step 1: 先根据原始文件大小.分割大小,算出最终分割的小文件数N step 2: 在磁盘上创建这N个小文件 step 3: 开多个线程(线程数=分割文件数),每个线程里,利用RandomAccessF

随机推荐