Я пытаюсь извлечь информацию с веб-сайта, но, к сожалению, получаю лишь ограниченную информацию.У меня проблемы с правильным Xpath, чтобы получить больше, чем просто первый элемент всей таблицы.Для отображения Xpath я использую Chrome DevTools.Как я могу сделать Xpath более общим, чтобы получить желаемый результат?Или у кого-нибудь есть идеи, как я могу сделать это немного умнее?Моя цель - получить файл json позже.
import requests
import lxml.html
html = requests.get('http://volcano.oregonstate.edu/volcano_table')
doc = lxml.html.fromstring(html.content)
volcanoes = doc.xpath('//*[@id="content"]/div/div[2]/table/tbody/tr[1]/td[1]/a/text()')
country = doc.xpath('//*[@id="content"]/div/div[2]/table/tbody/tr[1]/td[2]/text()')
latitude = doc.xpath('//*[@id="content"]/div/div[2]/table/tbody/tr[1]/td[4]/text()')
longitude = doc.xpath('//*[@id="content"]/div/div[2]/table/tbody/tr[1]/td[5]/text()')
elevation = doc.xpath('//*[@id="content"]/div/div[2]/table/tbody/tr[1]/td[6]/text()')
output = []
for info in zip(volcanoes, country, latitude, longitude, elevation):
resp = {}
resp['volcanoes'] = info[0]
resp['country'] = info[1]
resp['latitude'] = info[2]
resp['longitude'] = info[3]
resp['elevation'] = info[4]
output.append(resp)
print(output)
Вот что код может получить на данный момент:
[{'volcanoes': 'Abu', 'country': '\n Japan ', 'latitude': '\n 34.50 ', 'longitude': '\n 131.60 ', 'elevation': '\n 641 '}]