Красивый суп, нужна помощь по соскобу таблицы в другом разделе той же страницы - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь очистить веб-сайт с несколькими таблицами в разных разделах одной и той же страницы.

import requests
from bs4 import  BeautifulSoup


url = "https://www.predictit.org/Contract/5367/Will-Donald-Trump-be-president-at-year-end-2018#prices"

r = requests.get(url)
data = r.text
soup = BeautifulSoup(data,"html.parser")

table_body = soup.find('tbody')
rows = table_body.find_all('tr')
for row in rows:
    cols=row.find_all('td')
    cols=[x.text.strip() for x in cols]
    print(cols)

В этом разделе несколько страниц с разными таблицами в каждом разделе. Я пытаюсь очистить данные о ценах, которые находятся в разделе "#prices", но я указал их в URL, но по умолчанию BeautifulSoup соответствует таблице в первом разделе "#data". Можно ли как-нибудь перейти в нужный раздел?

1 Ответ

0 голосов
/ 04 мая 2018

В этом случае вам необходимо отправить запрос по указанному ниже URL, чтобы получить цену, которую вы хотите проанализировать. Вы можете получить этот URL с помощью devtools ..

import requests
from bs4 import  BeautifulSoup

url = "https://www.predictit.org/PrivateData/GetPriceListAjax?contractId=5367"

res = requests.get(url)
soup = BeautifulSoup(res.text,"html.parser")
for row in soup.select('table tr')[1:]:
    cols = [x.text.strip() for x in row.select('td')]
    print(cols)

Выход:

['Price', 'Shares', '', 'Price', 'Shares']
['81¢', '289', '', '80¢', '2192']
['82¢', '7936', '', '79¢', '5478']
['83¢', '12800', '', '78¢', '6189']
['84¢', '8846', '', '77¢', '6167']
['85¢', '7726', '', '76¢', '2334']
['86¢', '7247', '', '75¢', '3268']
['87¢', '5562', '', '74¢', '2425']
['88¢', '4988', '', '73¢', '1390']
['89¢', '2889', '', '72¢', '3836']
['90¢', '4143', '', '71¢', '944']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...