Web Scraping 此站点以获取输出
Web Scraping this site to get the output
有一个站点 https://colinhume.com/music.aspx 接受特定输入并将其转换为输出文件。
假设输入是:
X: 7
T:As Luck Will Have It
% Nottingham Music Database
S:John Lagden, via EF
M:6/8
K:D
E|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|"G"BcB "D"A3|"G"G2B "A7"A2G|\
"D"F2A d2f|
"G"efe "E7"dcB|"A7"ABA GFE|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|
"G"BcB "D"A3|"G"G2B "A7"A2G|"D"F2E "Bm"D2F|"Em"EFG "A7"F2E|"D"D3 -D2||
A|"D"d3 fed|"A"c2d e2A|"Bm"Bcd c2B|"F#m"A3 A2A|"G"B3 dcB|
"D"A2d f2a|"G"agf "E7"fed|"A7"e3 e2A|"D"d3 fed|"A"c2B A2A|
"Bm"B3 dcB|"F#m"A3 A2F|"G"G3 BAG|"D"F2A d2D|"Em"EFG "A7"F2E|"D"D3 -D2||
当您点击 "Convert" 按钮时,会出现一个顶部有一个 "Play" 按钮的输出页面。当您单击该按钮时,会下载一个 midi 文件。
现在,是否可以通过 python 代码自动完成整个过程,将 midi 文件存储到我的电脑上?
我需要此代码作为项目的一部分,该项目应自动将那种类型的输入转换为 MIDI 格式。我已经尝试了很多离线代码,其中 none 似乎可以正常工作。
所以我希望我可以通过网络抓取来做到这一点。
注意:输入需要采用特定格式,因此请按网站中的原样粘贴以上文本。
您需要在您的路径中导入 selenium module to run this. Also you need to have the chromedriver。自从您提到网络抓取后,您可能已经这样做了。
编辑:代码现在不显示 GUI 并将文件下载到 py 脚本的同一文件夹。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options)
download_path = os.path.dirname(__file__)
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd':'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_path}}
driver.execute("send_command", params)
song = """X: 7
T:As Luck Will Have It
% Nottingham Music Database
S:John Lagden, via EF
M:6/8
K:D
E|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|"G"BcB "D"A3|"G"G2B "A7"A2G|\
"D"F2A d2f|
"G"efe "E7"dcB|"A7"ABA GFE|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|
"G"BcB "D"A3|"G"G2B "A7"A2G|"D"F2E "Bm"D2F|"Em"EFG "A7"F2E|"D"D3 -D2||
A|"D"d3 fed|"A"c2d e2A|"Bm"Bcd c2B|"F#m"A3 A2A|"G"B3 dcB|
"D"A2d f2a|"G"agf "E7"fed|"A7"e3 e2A|"D"d3 fed|"A"c2B A2A|
"Bm"B3 dcB|"F#m"A3 A2F|"G"G3 BAG|"D"F2A d2D|"Em"EFG "A7"F2E|"D"D3 -D2||"""
driver.get("https://colinhume.com/music.aspx")
input_element = driver.find_element_by_id("InBox")
input_element.send_keys(song)
button_element = driver.find_element_by_id("ConvBtn")
button_element.click()
button_elements = driver.find_elements_by_class_name("Button")
for button_element in button_elements:
if button_element.text == "Play":
driver.get(button_element.find_element_by_tag_name("a").get_attribute("href"))
break
有一个站点 https://colinhume.com/music.aspx 接受特定输入并将其转换为输出文件。
假设输入是:
X: 7
T:As Luck Will Have It
% Nottingham Music Database
S:John Lagden, via EF
M:6/8
K:D
E|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|"G"BcB "D"A3|"G"G2B "A7"A2G|\
"D"F2A d2f|
"G"efe "E7"dcB|"A7"ABA GFE|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|
"G"BcB "D"A3|"G"G2B "A7"A2G|"D"F2E "Bm"D2F|"Em"EFG "A7"F2E|"D"D3 -D2||
A|"D"d3 fed|"A"c2d e2A|"Bm"Bcd c2B|"F#m"A3 A2A|"G"B3 dcB|
"D"A2d f2a|"G"agf "E7"fed|"A7"e3 e2A|"D"d3 fed|"A"c2B A2A|
"Bm"B3 dcB|"F#m"A3 A2F|"G"G3 BAG|"D"F2A d2D|"Em"EFG "A7"F2E|"D"D3 -D2||
当您点击 "Convert" 按钮时,会出现一个顶部有一个 "Play" 按钮的输出页面。当您单击该按钮时,会下载一个 midi 文件。
现在,是否可以通过 python 代码自动完成整个过程,将 midi 文件存储到我的电脑上?
我需要此代码作为项目的一部分,该项目应自动将那种类型的输入转换为 MIDI 格式。我已经尝试了很多离线代码,其中 none 似乎可以正常工作。
所以我希望我可以通过网络抓取来做到这一点。
注意:输入需要采用特定格式,因此请按网站中的原样粘贴以上文本。
您需要在您的路径中导入 selenium module to run this. Also you need to have the chromedriver。自从您提到网络抓取后,您可能已经这样做了。
编辑:代码现在不显示 GUI 并将文件下载到 py 脚本的同一文件夹。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options)
download_path = os.path.dirname(__file__)
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd':'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_path}}
driver.execute("send_command", params)
song = """X: 7
T:As Luck Will Have It
% Nottingham Music Database
S:John Lagden, via EF
M:6/8
K:D
E|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|"G"BcB "D"A3|"G"G2B "A7"A2G|\
"D"F2A d2f|
"G"efe "E7"dcB|"A7"ABA GFE|"D"F3 "A7/c+"A2G|"Bm"FGF "A7"E3|"D"F2A d2c|
"G"BcB "D"A3|"G"G2B "A7"A2G|"D"F2E "Bm"D2F|"Em"EFG "A7"F2E|"D"D3 -D2||
A|"D"d3 fed|"A"c2d e2A|"Bm"Bcd c2B|"F#m"A3 A2A|"G"B3 dcB|
"D"A2d f2a|"G"agf "E7"fed|"A7"e3 e2A|"D"d3 fed|"A"c2B A2A|
"Bm"B3 dcB|"F#m"A3 A2F|"G"G3 BAG|"D"F2A d2D|"Em"EFG "A7"F2E|"D"D3 -D2||"""
driver.get("https://colinhume.com/music.aspx")
input_element = driver.find_element_by_id("InBox")
input_element.send_keys(song)
button_element = driver.find_element_by_id("ConvBtn")
button_element.click()
button_elements = driver.find_elements_by_class_name("Button")
for button_element in button_elements:
if button_element.text == "Play":
driver.get(button_element.find_element_by_tag_name("a").get_attribute("href"))
break