从一个网页中的其他选项卡获取内容
Getting content from other tabs within one webpage
我想抓取本网站 table 中的信息,但我只从第一个 "tab" 中获取内容。从选项卡 1 切换到选项卡 2 时,我看到 url 相同。
有什么方法可以从该网页的所有选项卡中获取一个或多个 table 的信息?
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]
我想抓取本网站 table 中的信息,但我只从第一个 "tab" 中获取内容。从选项卡 1 切换到选项卡 2 时,我看到 url 相同。 有什么方法可以从该网页的所有选项卡中获取一个或多个 table 的信息?
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]