hr.py 该文件为本次实例中的爬虫文件
scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
__init__.py 如果一个目录中出现__init__.py文件时,python会把它当作模块(module)
items.py 设置数据存储模板,用于结构化数据,如:Django的Model
pipelines.py 数据处理行为,如:一般结构化的数据持久化
settings.py 配置文件,如:递归的层数、并发数,延迟下载等
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'])
在这里祝大家都能为了心中的那个梦想而去奋斗,相信自己,一定行!