我正试图实现一个超级简单的刮刀刮公寓价格和平方英尺从一个网站。我使用Python+scrapy来实现这一点,但只有一个问题:似乎该节是所需的信息,作为响应返回时显示为空,并且它包含的所有内容(div、span等)也不能通过CSS查询来解决。我可以访问除本节内容以外的所有内容
这是网站:https://www.251brandon.com/floorplans
这就是我的初步spider的样子(在本例中,只查找类“fp price”):
import scrapy
class Brandon251Spider(scrapy.Spider):
name = "Brandon251"
def start_requests(self):
urls = [
"https://www.251brandon.com/floorplans"
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
price = response.css('.fp-price').extract()
yield {
'test': price
}
返回的是空的扇区列表,而不是具有fp price类的所有元素
谢谢你的帮助。:)
您可以尝试使用xpath而不是选择器:
response.xpath('//*[@id="floorplan"]/text()')
另请看:https://doc.scrapy.org/en/latest/topics/selectors.html
如果@Casper是正确的,并且特定的元素是由javascript加载的,那么您应该检查scrapy splash(https://github.com/scrapy-plugins/scrapy-splash),这将使您能够加载javascript并在以后刮取页面。祝你好运
@Casper是正确的页面是用Javascript生成的。如果您尝试在禁用javascript的情况下在浏览器中加载页面,则内容将不可见。然而,当一个页面被javascript加载时,您需要的数据通常是JSON格式的。 我在网络响应中搜索sqr-ft的一个值,发现数据都是用pageData变量加载的
如果搜索页面的源代码,您会发现JSON对象是用页面的数据定义的,可以用来构建页面
相关问题 更多 >
编程相关推荐