微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用scrapy-splash从该网站获取动态加载的内容?

如何解决如何使用scrapy-splash从该网站获取动态加载的内容?

我正在尝试使用scrapy-splash从此website获取数据,但无法提取数据。我想获取有关每个实际状态的数据,例如href,价格等。这是我的代码

settings.py 中:

ROBOTSTXT_OBEY = False

USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/34.0.1847.131 Safari/537.36"

SPLASH_ENABLED = True


DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,'scrapy_splash.SplashMiddleware': 725,'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,}

SPLASH_URL = 'http://localhost:8050/'

SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,}

DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

我的蜘蛛:

class M2Spider(scrapy.Spider):
    
    name = "m2"
    allowed_domains = ['metrocuadrado.com']
    start_urls = [
            'https://www.metrocuadrado.com/bodega/arriendo'
            ]
    
    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url=url,callback= self.parse,endpoint='render.html',args={'wait': 10},)
                  
    def parse(self,response):
        print("--------------------------------------------------------------")
        real_states= response.selector.xpath(".//a[@class='sc-bdVaJa ebNrSm']").getall()

        print("real_states")

输出打印为空列表[]。我是新来的。有什么建议吗?

解决方法

我要做的是:

https://www.metrocuadrado.com/results/_next/static/chunks/commons.8afec6af6d5add2097bf.js发送请求,如果您搜索“ X-Api-Key”,则在响应中将找到一个API密钥。因此可以使用正则表达式轻松提取它,例如:re.findall(r'"X-Api-Key":"(\w+)"')

然后,在提取API密钥后,将请求发送到https://www.metrocuadrado.com/rest-search/search?seo=/bodega/arriendo&from=0&size=50,这是您发送的网站中的隐藏API。要获得有效的响应,您必须像这样附加标头

scrapy.Request(
    url=url_variable,headers={
        "x-api-key": api_key_variable_from_prev_step
    }
)

通过该API,您可以获取JSON格式的数据,该数据通常比解析html更为可靠,因为这会改变oftan。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。