scrapy 2.3 处理不同的响应格式
一旦对所需数据进行响应,如何从中提取所需数据取决于响应类型:
- 如果响应是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 .