笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

选择动态加载的内容

发布者: 笨鸟自学网



复制请求

有时,我们需要以Web浏览器执行请求的方式重新生成请求。

使用 network tool 查看Web浏览器如何执行所需的请求,并尝试用scrapy重新生成该请求。

这可能足以产生一个 Request 使用相同的HTTP方法和URL。但是,您可能还需要重新生成正文、标头和表单参数(请参见 FormRequest )。

因为所有主要浏览器都允许将请求导出到 cURL 格式,Scrapy结合了该方法 from_curl() 要生成等效项,请执行以下操作 Request 来自卷曲命令。要获取更多信息,请访问 request from curl 在网络工具部分内部。

一旦得到预期的响应,您就可以 extract the desired data from it .

你可以用Scrapy复制任何请求。但是,有时复制所有必需的请求在开发人员时间内似乎不高效。如果是这样,爬行速度对你来说不是主要的问题,你也可以考虑 JavaScript pre-rendering .

如果你得到预期的答复 sometimes 但并非总是这样,问题可能不是您的请求,而是目标服务器。目标服务器可能有问题、过载或 banning 你的一些要求。

注意,要将cURL命令转换为Scrapy请求,可以使用 curl2scrapy .

处理不同的响应格式

一旦对所需数据进行响应,如何从中提取所需数据取决于响应类型:

  • 如果响应是HTML或XML,请使用 selectors 像往常一样。

  • 如果响应是json,则使用 json.loads() 从中加载所需数据 response.text ::

    data = json.loads(response.text)
    

    如果所需数据位于嵌入在JSON数据中的HTML或XML代码中,则可以将该HTML或XML代码加载到 Selector 然后 use it 一如既往::

    selector = Selector(data['html'])
    
  • 如果响应是javascript,或HTML <script/> 包含所需数据的元素,请参见 分析javascript代码 .

  • 如果响应是css,请使用 regular expression 从中提取所需数据 response.text .

  • 如果响应是基于图像的图像或其他格式(例如PDF),则从 response.body 并使用OCR解决方案将所需数据提取为文本。

    例如,您可以使用 pytesseract. 要从PDF中读取表格, tabula-py 可能是更好的选择。

  • 如果响应是SVG,或者带有包含所需数据的嵌入式SVG的HTML,则可以使用 selectors ,因为SVG是基于XML的。

    否则,可能需要将SVG代码转换为栅格图像,并且 handle that raster image .


Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-12-4 15:46 , Processed in 0.036538 second(s), 17 queries .

© 2001-2020

返回顶部