【问题标题】:scrapy not visiting url after ##之后scrapy不访问url
【发布时间】:2014-12-24 08:57:28
【问题描述】:

我正在为一个网站编写 scraper。不管发生了什么奇怪的事情,它并没有访问我提供给他的 URL。而是访问网站的基本 url。

我在互联网上搜索并知道,scrapy 会忽略 # 之后的 URL,我需要识别正在发送的 Ajax 请求并模仿它。

但是问题是。 Ajax 请求的响应是 json 响应。它不是 html 内容。请有人帮我处理一下。

下面是网址

https://www.buildersshow.com/Search/Exhibitors.aspx#showID=11&state=160&tabname=name

【问题讨论】:

  • 不仅仅是 Scrapy,# 之后的东西永远不会到达服务器,它总是在客户端处理。处理 json 响应应该比从 HTML 中抓取更容易,您只需要执行 data = json.loads(response.body) 或类似的操作。

标签: scrapy


【解决方案1】:

如果您调查页面发出的 AJAX 请求,确定您需要发出的请求并获得响应,则它应该是响应正文中包含的 JSON。要解析它并获取您感兴趣的数据,请使用json 解码器/编码器模块。像这样的:

import json

mydata = json.loads(response.body)
info = mydata['somekey']
subinfo = mydata['somekey']['subkey']

等等。确保正确处理json解码器,最好先阅读official documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多