python scrapy - 从中​​提取数据 - 没有id标签

时间:2018-02-05 20:10:19

标签: python html xpath web-scraping scrapy

我对Python和Scrapy很陌生,这就是为什么我为自己创建一个项目来学习它的原因。但目前我正在努力从以下页面获取数据:Website to crawl

正如我所看到的那样,使用了&#34;开发者工具&#34;来自Chrome / Firefox的8个表格如下所示:<table class="sc-fHxwqH ddWfJE">

在这张图片structure and table I'd like to extract中,您可以看到结构和列(<td>)价值是=&#34;轮椅无障碍&#34;我要提取。该值位于第二列,它是一个图片标记。 它是这样读的:如果我能找到它(在这种情况下&#34;轮椅可访问&#34;),如果我根本找不到它,则值等于true,则该值等于false。 / p>

我通过浏览网站的父级详细信息三来管理周围的事情。但是现在我无法浏览到正确的XPATH来查找带有class="sc-fHxwqH ddWfJE"的表格

我试图将其缩小到shell cmd中的基础:

{ {2}}

轮椅通道的完整路径是: scrapy shell 'https://www.immoscout24.ch/de/d/wohnung-kaufen-bevilard/4761145?s=2&t=2&l=436&r=40&se=16&ci=3&ct=1290' tables = response.xpath('//*[@class="sc-fHxwqH ddWfJE"]/table') for table in tables[1:]: print("I found it!!") #this should be returned 8 times, once for each table table.xpath('tr/td[1]//text()').extract_first()

不幸的是,上面的代码并没有给出任何回报。我没有收到任何错误,但也没有我期望的印刷品。

  1. 我做错了什么?我想可能会那么困难吗?
  2. 一旦找到了正确的表,如何将表中的数据提取到最简单,最快速的JSON?我想这会很慢,因为基本上我需要多次解析整个HTML代码以查找每个属性描述是否存在?

感谢您的帮助或任何提示!我已经花了几天时间试图解决这个问题..

2 个答案:

答案 0 :(得分:2)

没有必要请求HTML,抓取节点值并将它们放入JSON中,因为所需的数据已经来自JSON格式的API

只需尝试

import requests
import json

url = "https://react-api.immoscout24.ch/v1.3/properties/4761145?ci=3&ct=1290&l=436&lng=de&p=4761145&r=40&s=2&se=16&t=2"
response = requests.get(url).json()

然后您可以获得所需的数据,如

print(response['propertyDetails']['agency'])

输出:

{'companyCity': 'Bevilard', 'companyName1': 'avendre.ch ', 'companyName2': 'Agen
ce Berne', 'companyPhoneMobile': '078 868 60 64', 'companyStreet': 'Rue Principa
le 41', 'companyZip': '2735', 'email': 'berne@avendre.ch', 'firstName': 'Verena'
, 'gender': 'f', 'lastName': 'Pecaut-Steiner', 'logoUrl': 'https://www.immoscout
24.ch/resources/memberlogos/L356353-R.jpg', 'nameFormatted': 'Verena Pecaut-Stei
ner', 'webUrl': 'http://www.avendre.ch'}

答案 1 :(得分:1)

如果我理解正确(请使用article检查每个h2节点,然后table

for table_node in response.xpath('//article/h2/following::*[1][name()="table"]'):
    #process each table here