需求分析:
1.采集目标网站:前程无忧 https://www.51job.com/
2.可根据工作关键字采集不同的工作类别。如“工程师”,“教师”
3.采集字段:工作名称(job_name)、公司名称(company)、城市(city)、工资水平(salary)、工作发布日期(date),工作详情链接(link)
实现方案:
首先创建qcwy项目:
>> scrapy startproject qcwy
>> cd qcwy
创建爬虫模板:
>> scrapy genspider spider_qcwy https://search.51job.com/
在 items.py 文件中定义需求字段:
class QcwyItem(scrapy.Item):
job_name = scrapy.Field()
company = scrapy.Field()
city = scrapy.Field()
salary = scrapy.Field()
date = scrapy.Field()
link = scrapy.Field()
在 spider_qcwy.py 中编写爬虫:
import scrapy
from urllib.parse import quote
import urllib
from ..items import QcwyItem
## 在Scrapy中的爬虫类必须是scrapy.Spider的子类
class SpiderQcwySpider(scrapy.Spider):
name = 'spider_qcwy'
## key_word为前程无忧上搜索工作的关键字,可根据需要改为“工程师”,“教师”,“会计”等
key_word = 'python'
## 该方法的作用是根据搜索工作关键字构造相对应的url
def url_parse(self, key_word):
qcwy_quote = quote(key_word)
qcwy_key_word = qcwy_quote.replace('%', '%25')
query = {
'lang': 'c',
'stype': '',
'postchannel': '0000',
'workyear': '99',
'cotype': '99',
'degreefrom': '99',
'jobterm': '99',
'companysize': '99',
'providesalary': '99',
'lonlat': '0%2C0',
'radius': '-1',
'ord_field': '0',
'confirmdate': '9',
'fromType': '',
'dibiaoid': '0',
'address': '',
'line': '',
'specialarea': '00',
'from': '',
'welfare': '',
}
params = urllib.parse.urlencode(query)
url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,%s,2,1.html?%s' % (qcwy_key_word, params)
return url
## 根据需要,重写start_requests方法
def start_requests(</