gpt4 book ai didi

python - Scrapy:为什么我不能从地下天气中提取我的目标数据?

转载 作者:行者123 更新时间:2023-12-04 01:04:10 24 4
gpt4 key购买 nike

我是 Python 和网络抓取的新手,这是我关于 stackoverflow 的第一个问题。我看了几个教程,然后尝试从此页面上的表中提取数据:https://www.wunderground.com/hourly/ir/tehran/date/2021-04-14 .

表格:TABLE

但问题是我似乎无法在 scrapy shell 中访问正确的类。这是我的蜘蛛:

import scrapy


class SpSpider(scrapy.Spider):
name = 'sp'
start_urls = ['http://https://www.wunderground.com/hourly/ir/tehran/date/2021-04-14/']

def parse(self, response):
time = response.css('span.ng-star-inserted').extract()

这是我在终端中得到的:

In [4]: response.css('span.ng-star-inserted::text').extract()**


Out[4]:
['\xa0',
'F',
'Night',
'\xa0',
'in',
'\xa0',
'miles',
'\xa0',
'F',
'\xa0',
'%',
'\xa0',
'in',
'\xa0',
'in']

我写这篇文章的目的是只获取一个数据(这里是表中的时间 12)。但如您所见,列表内容并不相关。我应该如何访问数据?

P.S: 我正在使用 python 3.8

最佳答案

对于初学者来说可能有点复杂,但没关系。

您要查找的数据是通过 XHR 请求发送的。 (F12->Netword-XHR)。您发出的请求仅返回将包含数据的 html 标记

在下面的代码中,我使用的 url 取自 XHR 选项卡。所以我在这个 url 上进行查询。它返回一个 JSON 响应。然后,我将此 JSON 响应(很容易包含在 Python 中的 dictionary 类型中)转换为 Pandas 数据框

注意查询得到的response包含“所有”可用天数的每小时预报(相当于你点击网页左右箭头的时候)

import requests as rq 
import pandas as pd

headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"}
url = "https://api.weather.com/v3/wx/forecast/hourly/15day?apiKey=6532d6454b8aa370768e63d6ba5a832e&geocode=35.696,51.401&units=e&language=en-US&format=json"
resp = rq.get(url, headers=headers).json()

resp.keys() ## pour observer

df = pd.DataFrame.from_dict(resp) # JSON to DF
df["validTimeLocal"] = pd.to_datetime(df["validTimeLocal"], infer_datetime_format=True) # object type to datetime type
df.sort_values(["validTimeLocal"], ascending=True, inplace=True) # sort the df by datetimes

sub_df = df[["validTimeLocal", "temperature", "precipChance"]] # select variables you want
print(sub_df.iloc[20:25]) ## print some, and compare to the website

BOLD 中的单词进行一些研究以取得进步。另请查看请求和 bs4 包。

注意:该 url 包含特定于您对德黑兰的研究的参数:地理编码等...

关于python - Scrapy:为什么我不能从地下天气中提取我的目标数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67075743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com