Scrapy爬取腾讯招聘项目

news/2024/7/19 11:23:04 标签: python, 爬虫, 后端

hr.py        该文件为本次实例中的爬虫文件

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

__init__.py        如果一个目录中出现__init__.py文件时,python会把它当作模块(module)

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

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

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

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

middlewares.py        中间件,用不到!

1. 在终端输入 scrapy startproject tencent 显示出如下页面

2. 再输入cd tencent 接着输入scrapy genspider hr tencent.com 会在spider文件目录下生成一个hr.py的文件

 3. 此时tencent文件中应该为下图所示情况

 4. 下面编写hr.py文件

import scrapy
import json
from scrapy.http.response.html import HtmlResponse
from ..items import TencentItem # 方式一

class HrSpider(scrapy.Spider):
    name = 'hr'
    allowed_domains = ['tencent.com'] # 可以修改
    one_url = 'https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1637752904594&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex={}&pageSize=10&language=zh-cn&area=cn'

    start_urls = [one_url.format(1)] # 可以修改 %d %s {}.format f'{}'
    # start_urls = ['https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1637752904594&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn']

    def parse(self, response):
        # element_html = etree.HTML(response.text)
        # element_html.xpath()
        # 解析数据
        data = json.loads(response.text)
        for job in data['Data']['Posts']:
            # 实例化对象
            item = TencentItem()
            item['job_name'] = job['RecruitPostName']
            # job_name = job['RecruitPostName']
            print(item)
        # print(data)
        # 翻页
        for page in range(2, 4):
            url = self.one_url.format(page)
            yield scrapy.Request(url=url)

if __name__ == '__main__':
        pass

5. 编写items.py文件

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class TencentItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    job_name = scrapy.Field() # 爬取数据的名称 数据封装
    pass

6. (1)接着改写settings.py文件

在settings.py中添加

LOG_LEVEL = 'WARNING'

(2)将ROBOTSTXT_OBEY = True改为

ROBOTSTXT_OBEY = False

此处为不遵守robots协议

(3)最后将下图注释取消并添加User-Agent

DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29'
}

 7. 最后运行hr.py文件,此处介绍两种方法:

方法一:进入项目的根目录,执行命令启动hr

scrapy crawl hr

方法二:在tencent文件中创建一个start.py文件,并输入代码,可直接运行start.py文件

from scrapy import cmdline
cmdline.execute(['scrapy','crawl','hr'])

自己


http://www.niftyadmin.cn/n/510226.html

相关文章

python反爬与反反爬常用知识点

服务器反爬的原因1. 爬虫占总PV较高,浪费资源2. 资源被批量抓走,丧失竞争力3. 法律的灰色地带服务器常反什么样的爬虫1. 十分低级的应届毕业生根本不管服务器的压力,很容易把站点搞挂2. 十分低级的创业小公司出于公司生存亡的考虑&#xff0c…

反爬与反反爬常见知识点

服务器反爬的原因1. 爬虫占总PV较高,浪费资源2. 资源被批量抓走,丧失竞争力3. 法律的灰色地带服务器常反什么样的爬虫1. 十分低级的应届毕业生根本不管服务器的压力,很容易把站点搞挂2. 十分低级的创业小公司出于公司生存亡的考虑&#xff0c…

爬取虎牙主播图片

本例中使用第三方库requests、lxml 在命令行中输入 pip/pip3 install requests pip/pip3 install lxml 如下图所示 本次实例比较简单 注释中每一步写的也很详细 所以我们直接上代码 demo.py import requests from lxml import etree# 找到抓取目标的所在位置 知道网址 u…

各种语言的hello world,看看你都写对了吗?

1. 编程语言之首——Java public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");} } 2. 嵌入式领域的王者——C语言 #include<stdio.h>int main(void) {printf("Hello World!\n");return 0; } …

Python实现图像的全景拼接

基本介绍 图像的全景拼接&#xff0c;即“缝合”两张具有重叠区域的图来创建一张全景图。其中用到了计算机视觉和图像处理技术有&#xff1a;关键点特征检测、局部不变特征、关键特征点匹配、RANSAC(Random Sample Consensus&#xff0c;随机采样一致性)和透视变形。 具体步骤…

第二次网页前端培训笔记(HTML表单和字符实体)

一、HTML表单 表单是一个包含表单元素的区域。表单元素是允许用户在表单中输入内容&#xff0c;比如&#xff1a;文本域 (textarea)、下拉列表、单选框 (radio-buttons)、复选框 (checkboxes)等等。表单使用表单标签 <form> 来设置: <form>input elements</fo…

第三次网页前端培训笔记(CSS基础和选择器)

一、CSS基础 如果学习CSS则要首先学习HTML&#xff0c;CSS是指层叠样式表&#xff0c;首先要了解CSS的基础语法&#xff0c;包括id和class选择器&#xff0c;创建&#xff0c;背景&#xff0c;文本&#xff0c;字体&#xff0c;链接样式&#xff0c;列表样式&#xff0c;表格&…

第四次网页前端培训笔记(CSS常用属性和盒子模型)

一、CSS属性 文字属性、颜色属性、盒子阴影和文字阴影、背景相关属性、边框属性、内外边距属性 1.文字属性 font-style : 取值 规定文字的样式 normal &#xff1a; 正常的&#xff0c; 默认就是正常的 italic &#xff1a; 倾斜的 font-weight : 取值 规定文字的粗细 …