智联招聘是通过动态加载文件获取数据,所以一开始解析的url不是网页的地址,而是json 文件,寻找json文件的方法。通过查看各个工作具体的网址得知规律;https://job.zhaopin.com/XXXXX.htm, 其中XXXX就是json文件中number对应的值。
步骤:
- 解析json文件,得到所有number对应的值
- 通过拼接得到新的网址
- 进入网址,得到自己想要的内容进入网址,得到自己想要的内容
源码:
# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request
import json
from JobScrapy.items import Job
class ZhilianSpider(scrapy.Spider):
name = 'zhilian'
#allowed_domains = ['www.zhaopin.com']
#start_urls = ['https://jobs.zhaopin.com/156244110251133.htm']
start_urls = ['https://fe-api.zhaopin.com/c/i/sou?start=0&pageSize=60&cityId=489&industry=10100']
def parse(self,response):
js=json.loads(response.body)
#print(js['data'])
res=js['data']['results']
for i in res:
num=i['number']
# https: // jobs.zhaopin.com / CZ486770730J00164642602.htm
url='https://jobs.zhaopin.com/'+str(num)+'.htm'
yield Request(url=url, callback=self.parse_job)
for i in range(1,2):
url='https://fe-api.zhaopin.com/c/i/sou?start='+str(i*60)+'0&pageSize=60&cityId=489&industry=10100'
yield Request(url=url,callback=