Python xpath为什么我在这个表达式中得到空结果
我试试这个Python xpath为什么我在这个表达式中得到空结果,python,xpath,web-scraping,scrapy,Python,Xpath,Web Scraping,Scrapy,我试试这个 .//div[@class='owl-wrapper'] 在这个网站上 但我得到的结果是空的,尽管我可以在谷歌F12开发工具中看到它 您可能认为这是一个javascript调用,但这不是因为我使用的是scrapy,我可以查看这样的响应: scrapy shell ("website") view(response) 那个班就在那里 请帮忙 我的Chrome中使用view(响应)的页面截图 问题是:包含div元素和owl包装器类的搜索结果与额外的GET请求异步加载 您需要在代码中
.//div[@class='owl-wrapper']
在这个网站上
但我得到的结果是空的,尽管我可以在谷歌F12开发工具中看到它
您可能认为这是一个javascript调用,但这不是因为我使用的是scrapy,我可以查看这样的响应:
scrapy shell ("website")
view(response)
那个班就在那里
请帮忙
我的Chrome中使用view(响应)的页面截图
问题是:包含div
元素和owl包装器
类的搜索结果与额外的GET请求异步加载
您需要在代码中模拟此请求,例如使用请求
:
import requests
with requests.Session() as session:
session.get('http://www.justproperty.com/search/uae/apartments/filter__cid/0/sort/score__desc/per_page/20/page/1')
params = {
'url': 'filter__cid/0/sort/score__desc/per_page/20/page/1',
'ajax': 'true'
}
response = session.get('http://www.justproperty.com/search/featured-properties/', params=params)
results = response.json()
for result in results:
print result['description']
印刷品:
2 bedroom unit on high floor. Full Fountain View,It comes with different amenities, facilities and hotel services. It is located in a prime location, The Address Hotel Lake Downtown. This property is...
Large Upgraded 1 Bedroom For Sale In Index Tower DIFC With DIFC ViewSize: 840 square feet - 78 square metersBedroom: 1 Bathroom: 1 plus guest washroomKitchen: Fully Equipped modern style kitchen with...
Spacious and nice 1-bedroom apartment for
...
示例Scrapy
spider基于提供的上述解决方案:
import json
import scrapy
class JustPropertySpider(scrapy.Spider):
name = "justproperty"
allowed_domains = ["justproperty.com"]
start_urls = [
"http://www.justproperty.com/search/uae/apartments/filter__cid/0/sort/score__desc/per_page/20/page/1"
]
def parse(self, response):
yield scrapy.Request('http://www.justproperty.com/search/featured-properties/?url=filter__cid/0/sort/score__desc/per_page/20/page/1&ajax=true',
callback=self.parse_results,
headers={'X-Requested-With': 'XMLHttpRequest'})
def parse_results(self, response):
results = json.loads(response.body)
for result in results:
print result['description']
我重复了你的scrapy
命令,但看不到class
值。@Birei我没有理解你的意思,对不起,你的意思是你也同意我吗?@Birei当你使用时,类在那里。我检查了视图(响应)生成的hmtl
页面的源代码
命令,我没有看到任何owl包装器
值。我的浏览器是Firefox,但我不认为在这种情况下会有什么不同。@Birei我更新了我的问题,在Chrome中添加了一个屏幕截图,用于查看(响应)
@MarcoDinatsoli的html。这不是一个粗糙的代码,它是python+请求,而是1。黑体标记的点在这里是最重要的2。您可以使用scrapy.http.Request
将代码翻译成scrapy。我找不到这样的选项来在scrapy中处理ajax调用,您能给我一个参考或链接吗?许多的thanks@MarcoDinatsoli好吧,是的,我认为关键在于提供必要的标题。今天晚些时候,我将尝试为您提供一个具体的解决方案。谢谢你回来。谢谢你的帮助,我当然接受你的答案,我已经发现这些链接可能会有帮助,但我正试图在它上投入更多的时间@MarcoDinatsoli请在更新的答案中查看示例蜘蛛。希望这有助于开始。