我想知道是否可以在 AppleScript App 中运行以下脚本。
所有这一切背后的想法是,人们不需要运行和处理代码,说他们不需要从 SublimeText 左右运行它,而只需点击一下应用程序让脚本运行并完成工作。如果这对你有用吗?
from bs4 import BeautifulSoup
import requests
import csv
class_1 = {"class": "productsPicture"}
class_2 = {"class": "product_content"}
class_3 = {"class": "id-fix"}
# map a column number to the required find parameters
class_to_find = {
0 : class_3, # Not defined in question
1 : class_1,
2 : class_1,
3 : class_3, # Not defined in question
4 : class_2,
5 : class_2}
with open('urls.csv', 'r') as csvFile, open('results.csv', 'w', newline='') as results:
reader = csv.reader(csvFile)
writer = csv.writer(results)
for row in reader:
# get the url
output_row = []
for index, url in enumerate(row):
url = url.strip()
# Skip any empty URLs
if len(url):
#print('col: {}\nurl: {}\nclass: {}\n\n'.format(index, url, class_to_find[index]))
# fetch content from server
try:
html = requests.get(url).content
except requests.exceptions.ConnectionError as e:
output_row.extend([url, '', 'bad url'])
continue
except requests.exceptions.MissingSchema as e:
output_row.extend([url, '', 'missing http...'])
continue
# soup fetched content
soup = BeautifulSoup(html, 'html.parser')
divTag = soup.find("div", class_to_find[index])
if divTag:
# Return all 'a' tags that contain an href
for a in divTag.find_all("a", href=True):
url_sub = a['href']
# Test that link is valid
try:
r = requests.get(url_sub)
output_row.extend([url, url_sub, 'ok'])
except requests.exceptions.ConnectionError as e:
output_row.extend([url, url_sub, 'bad link'])
else:
output_row.extend([url, '', 'no results'])
writer.writerow(output_row)
答案 0 :(得分:1)
在macOS上打开 AppleScript编辑器。
在新窗口中添加以下两行代码:
set desktop_folder to "$HOME/Desktop"
do shell script "python " & desktop_folder & "/Pricematch/foo.py"
注意:这假定foo.py
文件已保存到用户 Desktop 文件夹中名为 Pricemacth 的文件夹中。您需要将foo.py
部分替换为实际的真实文件名。
由于desktop_folder
变量设置为"$HOME/Desktop"
,您应该能够将此问题转发给多个用户而不会出现任何问题。您只需确保名为 Pricematch 的文件夹位于其 Desktop 文件夹中,它包含要运行的.py
文件。 $HOME
部分将自动采用用户文件夹,因此您无需为每个用户指定不同的用户名。
如果您决定更改.py
的位置,则需要相应地更新AppleScript中的路径。
要保存AppleScript:
run-python-script.app
Save
按钮。 (它可以保存在任何文件夹位置)双击run-python-script.app
中的Finder
进行操作。
修改强>
回应评论:
当python脚本完成他的工作时,是否有可能以某种方式获得通知。
以下是一些建议 - 它假设python脚本返回零/成功退出状态。您可以尝试将 AppleScript 中的第二行更改为:
用于显示对话框消息:
do shell script "python " & desktop_folder & "/Pricematch/foo.py && osascript -e 'tell application \"Finder\" to activate' -e 'tell application \"Finder\" to display dialog \"Finished Python Script\"'"
或者,说些什么:
do shell script "python " & desktop_folder & "/Pricematch/foo.py && osascript -e 'set Volume 4' -e 'tell application \"Finder\" to say \"Finished!\"' -e 'set Volume 0'"