Выбор строки таблицы с помощью Scrapy - PullRequest
0 голосов
/ 14 марта 2020

Я знаю, что это большой вопрос, но мне было интересно, может ли кто-нибудь помочь мне выбрать предмет с помощью скрапа?

Я хочу получить доступ к "средней температуре" на странице, указанной ниже, и я действительно сбит с толку о том, как это сделать. Обычно я бы использовал классы, но здесь они не предоставили их.

http://www.southamptonweather.co.uk/wxhistory.php

Спасибо, как всегда,

Гас

Ответы [ 2 ]

1 голос
/ 14 марта 2020
response.xpath('//td[text()="Average temperature"]/following-sibling::td/text()').extract()

Будет работать на вас.

Xpath, как правило, более мощный, чем css селекторы, но гораздо дольше и для записи (: Удачи!

1 голос
/ 14 марта 2020

Я не уверен, что такое «скрап», но вы легко можете получить предметы из таблицы HTML.

# find a specific table by table count
import pandas as pd
import requests
from bs4 import BeautifulSoup

res = requests.get("http://www.southamptonweather.co.uk/wxhistory.php")
soup = BeautifulSoup(res.content,'lxml')
table = soup.find_all('table')[1]
df = pd.read_html(str(table))

Результат:

[                             0                                                 1
 0   Mar 1 Average and Extremes                        Mar 1 Average and Extremes
 1          Average temperature                                             5.9°C
 2             Average humidity                                               69%
 3             Average dewpoint                                             0.6°C
 4            Average barometer                                          988.3 mb
 5            Average windspeed                                           6.9 mph
 6            Average gustspeed                                           9.7 mph
 7            Average direction                                        232° ( SW)
 8           Rainfall for month                                            2.8 mm
 9            Rainfall for year                                          267.4 mm
 10     Maximum rain per minute                    0.6 mm on day 01 at time 21:26
 11         Maximum temperature                     9.4°C on day 01 at time 14:49
 12         Minimum temperature                     3.6°C on day 01 at time 07:37
 13            Maximum humidity                       82% on day 01 at time 00:00
 14            Minimum humidity                       54% on day 01 at time 15:06
 15            Maximum pressure                  991.0 mb on day 01 at time 12:28
 16            Minimum pressure                  984.0 mb on day 01 at time 00:00
 17           Maximum windspeed                  17.3 mph on day 01 at time 10:45
 18          Maximum gust speed  28.8 mph from 225 °( SW) on day 01 at time 10:44
 19          Maximum heat index                     9.4°C on day 01 at time 14:49]

Я не уверен, что вы хотите сделать на этом этапе. Может быть, вы хотите всю таблицу, и если это так, вы сделали. Если вы хотите подмножество данных, просто примените фильтр к фрейму данных. Когда данные заключены в фрейм данных, вы можете делать все что угодно, включая изменение формы данных, построение графика, статистический или математический анализ и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...