Как сохранить все гиперссылки из прокручиваемой веб-таблицы? - PullRequest
1 голос
/ 21 июня 2020

Я хочу сохранить несколько гиперссылок в списке из веб-таблицы. сайт = https://www.sgx.com/derivatives/products Picture of webtable

on the above table, you can see "PRODUCT" column and hyperlinks on the column content. I want to store only those hyperlinks avoiding other hyperlinks on the page.

 Фьючерсы на Adani P&S Eco Zone  Фьючерсы ZADS = мой собственный капитал SP 0 # ЗАДСси: Посмотреть  Фьючерсы на Ambuja Cements  Фьючерсы ZACE = мой собственный капитал SP 0 # ZACEsi: Посмотреть  Фьючерсы на азиатские краски  Фьючерсы ZAPN = мой капитал SP 0 # ЗАПНси: Посмотреть  Фьючерсы на Aurobindo Pharma  Фьючерсы ZARB = мой собственный капитал SP 0 # ZARBsi: Посмотреть  Фьючерсы на Axis Bank  Фьючерсы ZAXS = мой капитал SP 0 # ZAXSsi: Посмотреть  Фьючерсы на Bajaj Auto  Фьючерсы ZBJA = мой собственный капитал SP 0 # ZBJAsi: Посмотреть  Фьючерсы на Bajaj Finance  Фьючерсы ZBAF = мой собственный капитал SP 0 # ZBAFsi: Посмотреть  Фьючерсы на Bharat Petroleum Corp  Фьючерсы ZBPC = мой собственный капитал SP 0 # ZBPCsi: Посмотреть  Фьючерс на Bharti Airtel  Фьючерсы ZBHA = мой собственный капитал SP 0 # ZBHAsi: Посмотреть  Фьючерс на Bharti Infratel  Фьючерсы ZBHI = мой собственный капитал SP 0 # ZBHIsi: Посмотреть  Bosch Futures  Фьючерсы ZBOS = мой собственный капитал SP 0 # ZBOSsi: Посмотреть  Фьючерсы на Cipla Ltd India  Фьючерсы ZCIP = мой собственный капитал SP 0 # ZCIPsi: Посмотреть  Фьючерсы на уголь Индии  Фьючерсы ZCOA = мой собственный капитал SP 0 # ZCOAsi: Посмотреть  Comfortdelgro Futures  Фьючерсы YCDD = мой собственный капитал 0 # YCDDsi: Посмотреть  Фьючерсы на DBS  Фьючерсы YDBS = мой SP КАПИТАЛ 0 # YDBSsi: Посмотреть  Фьючерсы Dr Reddy's Laboratories  Фьючерсы ZDRR = мой собственный капитал SP 0 # ZDRRsi: Посмотреть  Фьючерсы на Eicher Motors  Фьючерсы ZEIM = мой собственный капитал SP 0 # ZEIMsi: Посмотреть  Фьючерсы на GAIL India  Фьючерсы ZGAI = мой SP Equit 0 # ZGAIsi: Посмотреть  Genting Futures  Фьючерсы YGEN = мой SP КАПИТАЛ 0 # YGENsi: Посмотреть  Фьючерс на HCL Technologies  Фьючерсы ZHCL = мой собственный капитал SP 0 # ZHCLsi: Посмотреть  HDF C Банковские фьючерсы  Фьючерсы ZHDB = мой собственный капитал SP 0 # ЖДБси: Посмотреть  

Мне пришлось вырезать код HTML из-за ограничения количества слов. Но вы можете увидеть это на сайте (ссылка выше)

Ответы [ 3 ]

0 голосов
/ 22 июня 2020

С Selenium любой из этих двух должен возвращать список hrefs в разделе Product:

#by CSS
product_links=driver.find_elements_by_css_selector("div.table-container a[href*=products]")

или

#by XPATH
product_links=driver.find_elements_by_xpath("//div[@class='table-container']//a[contains(@href,'products')]")
0 голосов
/ 22 июня 2020

Самый простой способ получить все ссылки со страницы:

#Store all <a>'s from Product column
elements = driver.find_elements_by_xpath("//sgx-table-cell-link[@data-column-id='product']/a")
#Get href from <a>'s
links = [elements.get_attribute('href') for link in elements]
0 голосов
/ 22 июня 2020

Пример.

from simplified_scrapy import SimplifiedDoc, req, utils
html = '''
<sgx-table-list data-rendered-rows="30" data-visible-rows="15" data-rendered-index="0" data-visible-index="0" style="min-width: 860px; transform: translateY(0px);">
   <sgx-table-row data-row-id="187" data-row-index="0" style="height: 32px; line-height: 32px; transform: translateY(0px);">
      <sgx-table-cell-link data-frozen="true" data-autowidth="false" data-column-id="product" data-first="true" class="sgx-table-cell" style="width: 320px; left: 0px;"><a target="_blank" class="website-link" href="https://www.sgx.com/derivatives/products/indiassf?cc=ZADS">Adani P &amp; S Eco Zone Futures</a></sgx-table-cell-link>
      <sgx-table-cell-text data-frozen="true" data-autowidth="false" data-column-id="type" class="sgx-table-cell" style="width: 100px; left: 320px;">Futures</sgx-table-cell-text>
      <sgx-table-cell-text data-frozen="false" data-autowidth="true" data-column-id="bloomberg-code" class="sgx-table-cell" style="width: 160px;">ZADS=my SP Equity</sgx-table-cell-text>
      <sgx-table-cell-text data-frozen="false" data-autowidth="true" data-column-id="reuters-code" class="sgx-table-cell" style="width: 160px;">0#ZADSsi:</sgx-table-cell-text>
      <sgx-table-cell-link data-frozen="false" data-autowidth="true" data-column-id="delayed-prices" data-last="true" class="sgx-table-cell" style="width: 120px;"><a target="_blank" class="website-link" href="https://www.sgx.com/derivatives/delayed-prices-futures?cc=ZADS&amp;category=ssf">View</a></sgx-table-cell-link>
   </sgx-table-row>
   <sgx-table-row data-row-id="188" data-row-index="1" style="height: 32px; line-height: 32px; transform: translateY(32px);">
      <sgx-table-cell-link data-frozen="true" data-autowidth="false" data-column-id="product" data-first="true" class="sgx-table-cell" style="width: 320px; left: 0px;"><a target="_blank" class="website-link" href="https://www.sgx.com/derivatives/products/indiassf?cc=ZACE">Ambuja Cements Futures</a></sgx-table-cell-link>
      <sgx-table-cell-text data-frozen="true" data-autowidth="false" data-column-id="type" class="sgx-table-cell" style="width: 100px; left: 320px;">Futures</sgx-table-cell-text>
      <sgx-table-cell-text data-frozen="false" data-autowidth="true" data-column-id="bloomberg-code" class="sgx-table-cell" style="width: 160px;">ZACE=my SP Equity</sgx-table-cell-text>
      <sgx-table-cell-text data-frozen="false" data-autowidth="true" data-column-id="reuters-code" class="sgx-table-cell" style="width: 160px;">0#ZACEsi:</sgx-table-cell-text>
      <sgx-table-cell-link data-frozen="false" data-autowidth="true" data-column-id="delayed-prices" data-last="true" class="sgx-table-cell" style="width: 120px;"><a target="_blank" class="website-link" href="https://www.sgx.com/derivatives/delayed-prices-futures?cc=ZACE&amp;category=ssf">View</a></sgx-table-cell-link>
   </sgx-table-row>
</sgx-table-list>
'''
doc = SimplifiedDoc(html)
lst = doc.getElement('sgx-table-list',attr='style',value='min-width: 860px; transform: translateY(0px);')
lstA = lst.selects('a')
print (lstA.href)

Результат:

['https://www.sgx.com/derivatives/products/indiassf?cc=ZADS', 'https://www.sgx.com/derivatives/delayed-prices-futures?cc=ZADS&category=ssf', 'https://www.sgx.com/derivatives/products/indiassf?cc=ZACE', 'https://www.sgx.com/derivatives/delayed-prices-futures?cc=ZACE&category=ssf']

Вот еще примеры: https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples

...