前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy案例02-腾讯招聘信息爬取

Scrapy案例02-腾讯招聘信息爬取

作者头像
py3study
发布2020-01-17 16:36:38
5410
发布2020-01-17 16:36:38
举报
文章被收录于专栏:python3

目录

1. 目标

目标:https://hr.tencent.com/position.php?&start=0#a

爬取所有的职位信息信息

  • 职位名
  • 职位url
  • 职位类型
  • 职位人数
  • 工作地点
  • 发布时间

2. 网站结构分析

3. 编写爬虫程序

3.1. 配置需要爬取的目标变量

代码语言:javascript
复制
class TecentjobItem(scrapy.Item):
    # define the fields for your item here like:
    positionname = scrapy.Field()
    positionlink = scrapy.Field()
    positionType = scrapy.Field()
    peopleNum = scrapy.Field()
    workLocation = scrapy.Field()
    publishTime = scrapy.Field()

3.2. 写爬虫文件scrapy

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import scrapy
from tecentJob.items import TecentjobItem

class TencentSpider(scrapy.Spider):

    name = 'tencent'
    allowed_domains = ['tencent.com']
    url = 'https://hr.tencent.com/position.php?&start='
    offset = 0
    start_urls = [url + str(offset)]

    def parse(self, response):

        for each in response.xpath("//tr[@class = 'even'] | //tr[@class = 'odd']"):
            # 初始化模型对象
            item = TecentjobItem()

            item['positionname'] = each.xpath("./td[1]/a/text()").extract()[0]
            item['positionlink'] = each.xpath("./td[1]/a/@href").extract()[0]
            item['positionType'] = each.xpath("./td[2]/text()").extract()[0]
            item['peopleNum'] = each.xpath("./td[3]/text()").extract()[0]
            item['workLocation'] = each.xpath("./td[4]/text()").extract()[0]
            item['publishTime'] = each.xpath("./td[5]/text()").extract()[0]

            yield item

        if self.offset < 100:
            self.offset += 10

        # 将请求重写发送给调度器入队列、出队列、交给下载器下载
        # 拼接新的rurl,并回调parse函数处理response
        # yield scrapy.Request(url, callback = self.parse)

        yield scrapy.Request(self.url + str(self.offset), callback=self.parse)

3.3. 编写yield需要的管道文件

代码语言:javascript
复制
import json

class TecentjobPipeline(object):

    def __init__(self):
        self.filename = open("tencent.json", 'wb')

    def process_item(self, item, spider):
        text = json.dumps(dict(item),ensure_ascii=False) + "\n"
        self.filename.write(text.encode('utf-8'))
        return item

    def close_spider(self, spider):
        self.filename.close()

3.4. setting中配置请求抱头信息

代码语言:javascript
复制
DEFAULT_REQUEST_HEADERS = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
}

4. 最后结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 目标
  • 2. 网站结构分析
  • 3. 编写爬虫程序
    • 3.1. 配置需要爬取的目标变量
      • 3.2. 写爬虫文件scrapy
        • 3.3. 编写yield需要的管道文件
          • 3.4. setting中配置请求抱头信息
          • 4. 最后结果
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档