#python #selenium #web-scraping #beautifulsoup
#python #selenium #очистка веб-страниц #beautifulsoup
Вопрос:
Я пытаюсь загрузить файл с помощью Selenium и BeautifulSoup, но у меня возникли некоторые проблемы с настройкой веб-сайта. Я вижу, что в глубине кода есть объект table, содержащий нужную мне ссылку, но я сталкиваюсь с трудностями, фактически инструктируя BeautifulSoup и Selenium на самом деле перемещаться так далеко и находить ссылку. https://www.theice.com/clear-us/risk-management#margin-rates это веб-сайт, и я хочу загрузить файл сканирования полей.
hdr={'User-Agent':'Mozilla/5.0'}
req=urllib.request.Request(url,headers=hdr)
icepage=urllib.request.urlopen(req)
htmlitem=icepage.read()
soup=BeautifulSoup(htmlitem,'lxml')
divs=soup.find('div',{'class':'sticky-header__main'})
print(divs.findChild().find('div',{'class':'row'}).find('div',{'class':'1-main true-grid-10'}).find_all('div')[2])
Оттуда divs.findChild().find(‘div’,{‘class’:’row’}).find(‘div’,{‘class’:’1-main true-grid-10′}).find_all(‘div’)[2] — это самое близкое, что я получил, к выбору следующего div, который имеет id =’content-5485eefe-b105-49ed-b1ac- 7e9470d29262′ и я хочу детализировать это до ICUS_MARGIN_SCANNING csv в таблице на пять или шесть дополнительных уровней div ниже этого.
С Selenium я еще больше запутался, когда пробовал варианты driver.find_element_by_link_text(‘Сканирование полей’) и ничего не получаю обратно.
Любая помощь с доступом к этой таблице и файлу ICUS_Margin_scanning была бы высоко оценена. Спасибо!
Ответ №1:
использовал f12 => вкладка сеть и нашел эту страницу, так что вот и ты
from bs4 import BeautifulSoup
import requests
import datetime
BASE_API_URL='https://www.theice.com'
r=requests.get(f'https://www.theice.com/marginrates/ClearUSMarginParameterFiles.shtml?getParameterFileTableamp;category=Currentamp;_={int(datetime.datetime.now().timestamp()*1000)}')
soup=BeautifulSoup(r.content,features='lxml')
margin_scanning_link=BASE_API_URL soup.find_all("a", string="Margin Scanning")[0].attrs['href']
margin_scanning_file=requests.get(margin_scanning_link)
Комментарии:
1. Спасибо, что сделали это!