Замена nth-потомка на nth-типа дает неожиданную ошибку - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь получить некоторую информацию со следующей веб-страницы с BeautifulSoup:

url = 'https://web.archive.org/web/20071001215911/http://finance.rambler.ru'

С помощью моего браузера (Chrome) я копирую селектор для нужного элемента:

selector = 'body > div.fe_global > table:nth-child(6) > tbody > tr > td:nth-child(2) > table > tbody > tr > td.fe_col-left > div:nth-child(5) > table > tbody'

Однако bs4 не поддерживает nth-child, поэтому я заменяю его на nth-of-type:

selector = selector.replace('child', 'of-type')

и применяю к супу

r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
selected_element = soup.select(selector=selector)

print (selected_element)

вывод [].Я ожидал получить HTML-код вместо этого.В чем причина такого ответа?Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 29 ноября 2018

В выбранном div есть 2 таблицы, и я выберу вторую таблицу

from bs4 import BeautifulSoup
import requests

url = 'https://web.archive.org/web/20071001215911/http://finance.rambler.ru'
heads = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0'}
r = requests.get(url, headers=heads)
soup = BeautifulSoup(r.text, 'html.parser')
selected_element = soup.select('div[class="fe_small fe_l2"] table')[1]

print (selected_element)
...