我对如何通过javascript ajax调用运行python文件有疑问。
我使用python函数,并使用beautifulsoap框架对网站上的某些数据进行了Webscrap。我将所需的数据存储在一个json文件中,例如,如果从Windows控制台运行它,我的python函数就可以很好地工作。
问题是我想从chrome扩展应用程序中的ajax函数接收此数据。我的计划是从JavaScript函数读取json文件,但未执行python文件,因此js函数始终接收相同的json文件,并且不会刷新数据。
我试图知道python文件的响应是什么,并且js函数以字符串的形式接收整个python代码...
我不想将任何数据从python传递到javascript,我只想使用从ajax函数调用的python函数刷新json文件。
我附上了python和js代码。
Python代码:
url = 'http://www.website...'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
values = {'name': 'Michael Foord',
'location': 'Northampton',
'language': 'Python' }
headers = {'User-Agent': user_agent}
data = urllib.parse.urlencode(values)
data = data.encode('ascii')
req = urllib.request.Request(url, data, headers)
with urllib.request.urlopen(req) as response:
the_page = response.read()
soup = bs.BeautifulSoup(the_page, 'lxml')
for ulElement in soup.find_all('ul', class_='post-list'):
for liElement in ulElement.find_all('li', class_='post-list-item'):
dvDescription = liElement.find('div', class_='share-socials')
aElementImage = liElement.find('a', class_='post-thumb-link')
imgElementImage = aElementImage.find('img', class_='post-thumb')
for h4Element in liElement.find_all('h4'):
ThrasherTitles.append(h4Element.text)
aElement = h4Element.find('a')
data['videos'].append({
'id': VideoCount,
'title': h4Element.text,
'url': aElement['href'],
'description': dvDescription['data-text'],
'imageurl': imgElementImage['src']
})
VideoCount += 1
with open('Sources/videosdata.json', 'w') as outfile:
json.dump(data, outfile, indent=4, sort_keys=True)
JavaScript代码:
function RefreshJSONFile(){
$.ajax({
type: "POST",
url: "/main.py",
success: function(data){
}
}).done(function(o) {
(单击按钮后将执行js函数)
有人可以帮助我吗?谢谢大家!