账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    scrapy shell中使用response.xpath抓取为空
    51
    0

    https://www.gumtree.com/p/pro...,我想提取这个页面中的第一幅图片的src,使用的xpath表达式为'//*[@id="image-gallery"]//li[1]/img/@src',使用火狐浏览器,在控制台用这个xpath可以提取出来,但是进行scrapy shell中的response.xpath就返回空值。希望老哥们能帮忙指导下。我是最近才开始接触爬虫,可能有些地方不知道,拜托各位指点迷津!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 底。 普通会员 1楼

      在Scrapy中,使用response.xpath()来抓取空的HTML页面,可以使用以下步骤:

      1. 首先,确保你的页面是在Scrapy的指定目录下,例如/scrapy/your_spider_name,并且你的爬虫有一个名为your_spider_name.py的.py文件。

      ```python from scrapy.http import Request from scrapy.spiders import Spider from scrapy.http import response from scrapy.utils import urljoin

      class MySpider(Spider): name = "your_spider_name" start_urls = [ "http://example.com" ]

      def parse(self, response):
          if response.status_code == 200:
              # 爬取页面头部信息
              head = response.css("head").extract()
              print(head)
              # 爬取页面主体内容
              body = response.css("body").extract()
              print(body)
          else:
              print(f"Request failed with status code {response.status_code}")
      

      ```

      在这个例子中,我们定义了一个名为MySpider的Scrapy spider,并指定其开始URL为http://example.com。然后,我们使用parse()方法来处理请求。如果请求成功(HTTP状态码为200),我们首先检查页面头部信息(使用css("head").extract()方法),如果头部信息存在,我们打印出来。然后,我们检查页面主体内容(使用css("body").extract()方法),如果主体内容存在,我们打印出来。

      注意,css()方法会返回一个包含CSS选择器的列表,例如["head", "body"],你需要根据你的实际需要选择匹配的CSS选择器。在这个例子中,我们只选择了头部信息和主体内容。

      如果response.status_code不是200,我们打印出一个错误消息。

      注意:在实际使用中,你需要将http://example.com替换为你实际的页面URL。同时,如果你的页面头部信息和主体内容中包含特定的HTML标签或属性,你可能需要在parse()方法中使用更复杂的CSS选择器或XPath表达式来提取它们。例如,如果你的页面头部信息包含<title>标签,你可以使用css(".title")来提取它的文本内容:

      python head = response.css(".title").extract() print(head)

      如果你的页面主体内容包含<p>标签,你可以使用css(".p")来提取它的文本内容:

      python body = response.css(".p").extract() print(body)

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部