Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xpath为什么我在这个表达式中得到空结果_Python_Xpath_Web Scraping_Scrapy - Fatal编程技术网

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请在更新的答案中查看示例蜘蛛。希望这有助于开始。