解析得到的是xa0而不是6°C

2024-04-18 01:02:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在下面的网站上使用scrapy spider进行搔痒

scrapy genspider netweather_belfast https://www.netweather.tv/weather-forecasts/uk/10-day/2521~Belfast

当我检查元素的文本显示温度时,我尝试了下面的Xpath

//td[@id="mi1"]/text()

html element displaying above temperature xpath

我收到的输出

[<Selector xpath='//td[@id="mi1"]/text()' data='\xa0'>]

而不是

[<Selector xpath='//td[@id="mi1"]/text()' data='6°C'>]

是否存在编码问题?如何在scrapy上启用它


Tags: texthttpsiddata网站wwwselectorxpath
1条回答
网友
1楼 · 发布于 2024-04-18 01:02:54

事实上,数据是由javascript动态加载的,这就是为什么不能仅使用scrapy获取实际数据的原因。你需要一个自动化工具,比如selenium。在这里,我使用硒与刮痧

示例代码:

import scrapy
from scrapy_selenium import SeleniumRequest

class CoinSpider(scrapy.Spider):

    name = 'temp'

    def start_requests(self):
        url = 'https://www.netweather.tv/weather-forecasts/uk/10-day/2521~Belfast'
        yield SeleniumRequest(
            url=url,
            wait_time=3,
            callback=self.parse)

    def parse(self, response):
        yield {
                'Min_Feel_Like': response.xpath('//td[@id="mi1"]/div/text()').get()
                }

    def spider_closed(self):
        self.driver.close()

输出:(因为是温度,所以输出可能与我的不同)

[scrapy.core.scraper] DEBUG: Scraped from <200 https://www.netweather.tv/weather-forecasts/uk/10-day/2521~Belfast>
{'Min_Feel_Like': '7°c'}

相关问题 更多 >

    热门问题