10.为scrapy多文件服务,单个py文件测试

使用scrapy做数据爬取时,尤其是多页多内容爬取,不能对文件做频繁执行,一是容易被封ip,二是太频繁的操作会引起网络维护人员反感。这时,就需要单独写个文件对一些没有把握的字段进行爬取,为scrapy多文件爬取服务。

以拉勾网为例,想要在这个辅助测试的文件中获得任职的学历要求

代码为:

#coding:utf-8

import requests

import lxml.etree

headers={

"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

}

data = requests.get("https://www.lagou.com/jobs/4680072.html", headers=headers).content.decode("utf-8")

res = lxml.etree.HTML(data)

degree_need = res.xpath("//*[@class=\"job_request\"]/p/span[4]/text()")

print(degree_need)

代码中.content.decode("utf-8")与.text等价,requests的content与text的区别是,content返回的是,text返回的是,content.decode("utf-8")返回的是

上面的解析方式是单页测试的一种,下面这种和scrapyresponse自己的解析基本一致。以后在做单页测试时,可以采用这种方式。

#coding:utf-8

import requests

from scrapy.selector import Selector

headers={

"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

}

data = requests.get("https://www.lagou.com/jobs/4680072.html", headers=headers)

selector = Selector(text=data.text)

salary = selector.css(".salary::text").extract_first()

print(salary)

你可能感兴趣的:(10.为scrapy多文件服务,单个py文件测试)