独孤求败Ace 2023-05-29 22:18 采纳率: 18.2%
浏览 16

scrapy框架,命令提示符,python爬虫


##请求传参,深度爬取。需求:boss直聘岗位名称、岗位描述
import scrapy

#from bossPro.items import BossproItem

class BossSpider(scrapy.Spider):
    name = "boss"
    #allowed_domains = ["www.xxx.com"]
    start_urls = ["https://www.zhipin.com/web/geek/job?query=Python&city=101010100"]
    #定义解析详情页的函数
    #回调函数接受item
    def parse_detail(self,response):
        item=response.meta["item"]#回调函数接受item
        job_desc=response.xpath("//*[@id='main']/div[3]/div/div[2]/div[1]/div[2]//text()").extract()#返回的是一个包含字符串的列表

        job_desc="".join(job_desc)#将列表中的字符串拼接
        item["job_desc"]=job_desc
        #print(job_desc)
        yield item#将item提交给管道


    def parse(self, response):
        li_list=response.xpath("//*[@id='wrap']/div[2]/div[2]/div/div[1]/div[2]/ul/li")
        for li in li_list:
            job_name=li.xpath(".//div[1]/a/div[1]/span[1]/text()").extract_first()
            #实例化一个item对象
            item=BossproItem()
            item["job_name"]=job_name
            #print(job_name)
            detail_url="https://www.zhipin.com"+li.xpath("./div[1]/a/@href").extract_first()
            #对详情页发请求获取页面源码数据
            #手动请求的发送
            #请求传参:meta={},可以将meta字典传递给对应的回调函数即parse_detail
            yield scrapy.Request(detail_url,callback=parse_detail,meta={"item":item})

通过cmd运行scrapy crawl boss没有出现报错,但是返回内容为空,仅仅显示项目所在的路径./bossPro/,网址代码和xpath路径没有错误,log_level=ERROR,DEBUG,INFO这三个值都试过没用,li_list=response.xpath("//*[@id='wrap']/div[2]/div[2]/div/div[1]/div[2]/ul/li")这段代码请求出来的结果也是一个空列表,希望能得到解答
  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-03 19:27
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 5月29日