从一个网页中的其他选项卡获取内容

Getting content from other tabs within one webpage

我想抓取本网站 table 中的信息,但我只从第一个 "tab" 中获取内容。从选项卡 1 切换到选项卡 2 时,我看到 url 相同。 有什么方法可以从该网页的所有选项卡中获取一个或多个 table 的信息?

网页:https://newsweb.oslobors.no/search?category=&issuer=&fromDate=2010-01-01&toDate=2020-02-03&market=&messageTitle=

from pandas.io.html import read_html
from selenium import webdriver

today = "2020-02-03"
url = "https://newsweb.oslobors.no/search?category=&issuer=&fromDate=2010-01-01&toDate=2020-02-03&market=&messageTitle="
driver = webdriver.Firefox(executable_path = r'my gecko path')
driver.get(url)
driver.implicitly_wait(100)
table = driver.find_element_by_xpath('/html/body/div[1]/div/main/table')

table_html = table.get_attribute('outerHTML')
tables = read_html(table_html)[0]
print(tables)

好吧,我已经完成了 chrome 浏览器希望 firefox 会给你同样的结果。

使用无限循环并检查 next 按钮 available.If 在页面上不可用它将打破隐式等待的 loop.Instead 使用 WebDriverWait()

代码: 解决方案 1 在每一页上打印表格。

from pandas.io.html import read_html
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pandas as pd
options = Options()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

today = "2020-02-03"
url = "https://newsweb.oslobors.no/search?category=&issuer=&fromDate=2010-01-01&toDate=2020-02-03&market=&messageTitle="
driver=webdriver.Chrome(options=options)
driver.get(url)

while True:
   WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'table.sc-frDJqD.iirWZt')))
   table = driver.find_element_by_css_selector('table.sc-frDJqD.iirWZt')
   table_html = table.get_attribute('outerHTML')
   tables = read_html(table_html)[0]
   print(tables)

   if len(driver.find_elements_by_xpath("//li[@class='disabled']//a[text()='⟩']"))>0:
       break;
   else:
       driver.execute_script("arguments[0].click();", driver.find_element_by_xpath("//li//a[text()='⟩']"))

解决方案 2 将为您提供包含所有记录的单个数据框。

from pandas.io.html import read_html
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pandas as pd
options = Options()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

today = "2020-02-03"
url = "https://newsweb.oslobors.no/search?category=&issuer=&fromDate=2010-01-01&toDate=2020-02-03&market=&messageTitle="
driver=webdriver.Chrome(options=options)
driver.get(url)
df=pd.DataFrame()
while True:
   WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'table.sc-frDJqD.iirWZt')))
   table = driver.find_element_by_css_selector('table.sc-frDJqD.iirWZt')
   table_html = table.get_attribute('outerHTML')
   tables = read_html(table_html)[0]
   #print(tables)
   df = df.append(tables, ignore_index=True)
   if len(driver.find_elements_by_xpath("//li[@class='disabled']//a[text()='⟩']"))>0:
       break;
   else:
       driver.execute_script("arguments[0].click();", driver.find_element_by_xpath("//li//a[text()='⟩']"))

print(df)

输出:

                  Tid  ...                                           Kategori
0    03.02.2020 15:47  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
1    03.02.2020 15:10  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
2    03.02.2020 14:43  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
3    03.02.2020 14:22  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
4    03.02.2020 14:21  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
5    03.02.2020 14:21  ...                         FLAGGINGFLAGGINGWWFLAGGING
6    03.02.2020 14:09  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
7    03.02.2020 13:36  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
8    03.02.2020 13:30  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
9    03.02.2020 13:22  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
10   03.02.2020 13:21  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
11   03.02.2020 13:21  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
12   03.02.2020 12:44  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
13   03.02.2020 12:14  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
14   03.02.2020 12:10  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
15   03.02.2020 11:52  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
16   03.02.2020 11:09  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
17   03.02.2020 11:09  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
18   03.02.2020 11:05  ...  INNSIDEINFORMASJONINNSIDEINFORMASJONWWINNSIDEI...
19   03.02.2020 11:05  ...  INNSIDEINFORMASJONINNSIDEINFORMASJONWWINNSIDEI...
20   03.02.2020 10:49  ...  MELDING FRA ANDRE AKTØRERMELDING FRA ANDRE AKT...
21   03.02.2020 10:40  ...  KAPITAL- OG STEMMERETTSENDRINGERKAPITAL- OG ST...
22   03.02.2020 10:37  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
23   03.02.2020 09:56  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
24   03.02.2020 09:30  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
25   03.02.2020 08:30  ...  INNSIDEINFORMASJONINNSIDEINFORMASJONWWINNSIDEI...
26   03.02.2020 08:15  ...  SÆRLIG OBSERVASJONSÆRLIG OBSERVASJONWWSÆRLIG O...
27   03.02.2020 08:14  ...  SÆRLIG OBSERVASJONSÆRLIG OBSERVASJONWWSÆRLIG O...
28   03.02.2020 08:13  ...  SÆRLIG OBSERVASJONSÆRLIG OBSERVASJONWWSÆRLIG O...
29   03.02.2020 08:12  ...  SÆRLIG OBSERVASJONSÆRLIG OBSERVASJONWWSÆRLIG O...
..                ...  ...                                                ...
470  24.01.2020 13:51  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
471  24.01.2020 13:50  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
472  24.01.2020 13:50  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
473  24.01.2020 13:50  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
474  24.01.2020 13:50  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
475  24.01.2020 13:50  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
476  24.01.2020 13:47  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
477  24.01.2020 13:37  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
478  24.01.2020 13:37  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
479  24.01.2020 13:30  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
480  24.01.2020 13:15  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
481  24.01.2020 13:15  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
482  24.01.2020 13:07  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
483  24.01.2020 13:05  ...    RENTEREGULERINGRENTEREGULERINGWWRENTEREGULERING
484  24.01.2020 13:05  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
485  24.01.2020 13:00  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
486  24.01.2020 12:50  ...  INNSIDEINFORMASJONINNSIDEINFORMASJONWWINNSIDEI...
487  24.01.2020 12:35  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
488  24.01.2020 12:25  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
489  24.01.2020 12:14  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
490  24.01.2020 12:07  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
491  24.01.2020 12:03  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
492  24.01.2020 12:02  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
493  24.01.2020 11:59  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
494  24.01.2020 11:56  ...  NOTERING / OPPTAK AV VERDIPAPIRERNOTERING / OP...
495  24.01.2020 11:47  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
496  24.01.2020 11:36  ...  ANNEN INFORMASJONSPLIKTIG REGULATORISK INFORMA...
497  24.01.2020 10:39  ...  INNSIDEINFORMASJONINNSIDEINFORMASJONWWINNSIDEI...
498  24.01.2020 10:06  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...
499  24.01.2020 09:53  ...  IKKE-INFORMASJONSPLIKTIGE PRESSEMELDINGERIKKE-...

[500 rows x 7 columns]