美文网首页
10.为scrapy多文件服务,单个py文件测试

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

作者: starrymusic | 来源:发表于2019-04-01 16:10 被阅读0次

    使用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返回的是<class 'bytes'>,text返回的是<class 'str'>,content.decode("utf-8")返回的是<class 'str'>

    上面的解析方式是单页测试的一种,下面这种和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文件测试

          本文链接:https://www.haomeiwen.com/subject/bsivbqtx.html