Как очистить текст определенной ячейки с сайта, используя BeautifulSoup - PullRequest
0 голосов
/ 27 июня 2018

В течение последнего часа я пытался очистить текст с веб-сайта и не добился прогресса, просто потому, что у меня очень мало знаний о том, как на самом деле использовать BSoup.

def select_ticker():
    url = "https://www.barchart.com/stocks/performance/gap/gap-up?screener=nasdaq"

    r = requests.get(url)
    html = r.text
    soup = BeautifulSoup(html)


    find = soup.findAll('td, {"data-ng-if:"row.blankRow"}')

    print(find)

Я собираюсь на этот сайт и пытаюсь получить первый символ из таблицы. Прямо сейчас этот символ - BFBG

Я знаю, что это должно быть очень легко для тех, кто на самом деле знает, что они делают с BSoup, но я не понимаю, что искать, и этот сайт также не облегчает поиск.

Я ценю ваше время и спасибо за помощь!

1 Ответ

0 голосов
/ 27 июня 2018

На самом деле вы не можете удалить первый символ из запроса на получение html. Вам нужно получить JSON.

import urllib3
import json
http = urllib3.PoolManager()
r = http.request('GET', 'https://core-api.barchart.com/v1/quotes/get?lists=stocks.gaps.up.nasdaq&orderDir=desc&fields=symbol,symbolName,lastPrice,priceChange,gapUp,highPrice,lowPrice,volume,tradeTime,symbolCode,symbolType,hasOptions&orderBy=gapUp&meta=field.shortName,field.type,field.description&hasOptions=true&page=1&limit=100&raw=1')
print(json.loads(r.data)['data'][0]['symbol'])

И вот вам первый символ.

С помощью Json вы также можете найти любую информацию, которую, возможно, захотите удалить.

enter image description here

Вот как обычно вы можете найти этих Jsons: enter image description here

Зайдите в консоль, вкладку сети, вкладку xhr и перезагрузите страницу. Если получено много ресурсов, вы также можете выполнить фильтрацию по имени домена! :)

Однако этот синтаксис неправильный: soup.findAll ('td, {"data-ng-if:" row.blankRow "}')

вам нужно дать словарь методу find_all в соответствии с документом BS4 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all

soup.find_all('td', {'data-ng-if':'row.blankRow'})

Надеюсь, это поможет

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