python scrapy - 从 <table> 中提取数据 - 没有 id 标签

标签 python html xpath web-scraping scrapy

我对 Python 和 Scrapy 还很陌生,所以我创建了一个项目供自己学习。但目前我正在努力从以下页面获取数据:Website to crawl

正如我在 Chrome/Firefox 的“开发者工具”中看到的那样,有 8 个表的类如下:<table class="sc-fHxwqH ddWfJE">

在这张图片中structure and table I'd like to extract您会看到我要提取的结构和列 ( <td>),其中值为 = "Wheelchair accessible"。该值位于第二列,它是一个图片标签。 它是这样读的:如果我能找到它(在本例中为“Wheelchair accessible”),则该值等于 true 如果我根本找不到它,则该值等于 false。

我管理它周围的事情,比如浏览网站的父详细信息三。但是现在我无法浏览到正确的 XPATH 来找到这个带有 class="sc-fHxwqH ddWfJE" 的表。

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

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()

轮椅无障碍 channel 的完整路径是: //*[@id="root"]/div/div/div[1]/section/article[7]/table/tbody/tr[1]/td[1]

不幸的是,上面的代码没有返回任何内容。我没有收到任何错误,但也没有我期望的打印结果。

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

非常感谢您的所有帮助或任何提示!我已经花了几天时间试图弄明白..

最佳答案

不需要请求 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'}

关于python scrapy - 从 <table> 中提取数据 - 没有 id 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630681/

相关文章:

javascript - 当用户滚动文档 jquery 时停止光标在光标 div 上更改

.net - 这两种样式的 xpath 逻辑 'and' 是否等效?

xml - XQuery 嵌套循环的自动增量辅助索引 var

C# 读取具有多个变量命名空间的 XML

python - 如何扩展使用 AbstractBaseUser 创建的现有自定义用户模型以拥有多种用户类型,例如客户、培训师和作者?

python - 如何使用子进程运行命令模块avail?

c++ - Python ctypes : wraping c++ class with operators

python - 如何grep一行中的多个单词?

html - 折叠页脚的背景

javascript - jQuery 选择器在 Fotorama.io 中不起作用