Scraping Table using Python and Selenium
我正试图用python刮掉下面的表。尝试拉HTML标记来查找元素id_dt1_ngy00等等,但是一旦填充了页面,就找不到它了,所以有人告诉我使用Selenium并成功地获取了一些数据。
https://www.insidefutures.com/markets/data.php?page=quote&sym=ng&x=13&y=8页
这些数字每10分钟更新一次,所以这个网站是动态的。使用下面的代码,但它以线性格式打印所有内容,而不是以表格形式显示为行和列的格式。下面包括两个部分的样本输出
1 2 3 4 5 6 7 8 9 10 | Contract Last Change Open High Low Volume Prev. Stl. Time Links |
五月21日(NGK21)
1 2 3 4 5 6 7 8 9 | 2.550s +0.006 2.550 2.550 2.550 1 2.544 05/21/18 Q / C / O |
Jun’21(NGM21)
1 2 3 4 5 6 7 8 9 | 2.576s +0.006 0.000 2.576 2.576 0 2.570 05/21/18 Q / C / O |
下面的代码导入时间来自BS4进口美汤来自Selenium导入WebDriver将熊猫作为PD导入
browser=webdriver.chrome(可执行文件u path="c:userssiddkpycharmprojectswebsrapingvenvseleniumwebdriverchromedriver.exe")
browser.get("https://www.insidefutures.com/markets/data.php?"page=quote&sym=ng&x=14&y=16")
html=browser.page_源soup=beautifulsoup(html,'html.parser')
thu tags=汤。查找所有(tr)对于标签中的th:打印(th.get_text())
我想在熊猫中提取这些数据,并每天分析平均值等。请帮忙。我已经用尽了自己的力量,通过多次迭代来编写代码。
尝试以下脚本以获取表格数据。需要找到正确的URL,该URL包含相同的表,但不会动态生成,这样您就可以在不使用任何浏览器模拟器的情况下执行操作。
试一试:
1 2 3 4 5 6 7 8 9 10 | from bs4 import BeautifulSoup import requests url ="https://shared.websol.barchart.com/quotes/quote.php?page=quote&sym=ng&x=13&y=8&domain=if&display_ice=1&enabled_ice_exchanges=&tz=0&ed=0" res = requests.get(url) soup = BeautifulSoup(res.text,"lxml") for tr in soup.find(class_="bcQuoteTable").find_all("tr"): data = [item.get_text(strip=True) for item in tr.find_all(["th","td"])] print(data) |
结果是:
1 2 3 4 5 | ['Contract', 'Last', 'Change', 'Open', 'High', 'Low', 'Volume', 'Prev. Stl.', 'Time', 'Links'] ['Cash (NGY00)', '2.770s', '+0.010', '0.000', '2.770', '2.770', '0', '2.760', '05/21/18', 'Q/C/O'] ["Jun \'18 (NGM18)", '2.901', '-0.007', '2.902', '2.903', '2.899', '138', '2.908', '17:11', 'Q/C/O'] ["Jul \'18 (NGN18)", '2.927', '-0.009', '2.928', '2.930', '2.926', '91', '2.936', '17:11', 'Q/C/O'] ["Aug \'18 (NGQ18)", '2.944', '-0.008', '2.945', '2.947', '2.944', '42', '2.952', '17:10', 'Q/C/O'] |