Webアプリケーションで問題が発生しました。 は、ここに私のコードです:スクラップテーブルの値がJavascriptからPythonに生成
@app.route('/addrec',methods = ['POST', 'GET'])
def addrec():
if g.user:
if request.method == 'POST':
#UPPER PANE
payor = request.form['payor']
receiptno = request.form['OR']
paymentmethod = request.form['paymentmethod']
naive_dt = time.strftime("%m/%d/%Y")
collectiondate = naive_dt = datetime.now()
message = request.form['message']
#LOWER PANE
url_to_scrape = 'http://localhost:5000/form'
r = requests.get(url_to_scrape)
soup = BeautifulSoup(r.text)
nature = []
for table_row in soup.select("table.inmatesList tr"):
cells = table_row.findAll('td')
if len(cells) > 0:
nature = cells[0].text.strip()
natureamt = cells[1].text.strip()
nature = {'nature': nature, 'nature': natureamt}
nature_list.append(nature)
ent = Entry(receiptno, payor,officer, paymentmethod, collectiondate,message, nature_list)
add_entry(ent)
actions="Applied"
return redirect(url_for('form'))
return redirect(url_for('home'))
あなたは私が私のフォームから値をそれぞれ取得していますし、beautifulsoup使用して、私のテーブル内の値を掻き落としている見ることができるように。しかし、送信ボタンをクリックすると、永久に読み込まれます。私は上部のペインから谷を取得していますが、テーブルにはありません。
ところで、私はjavascript関数onClickから自分のセルを生成しています。ちょうど私のJavaScriptが問題かもしれません。または、おそらく、javascrip関数 - > pythonからこれらの値を抽出する簡単な方法があります。ここに私のjavascriptのコードとHTML
<script type="text/javascript">
function deleteRow(o){
var p=o.parentNode.parentNode;
p.parentNode.removeChild(p);
}
function addRow()
{
var table = document.getElementById("datatable"),
newRow = table.insertRow(table.length),
cell1 = newRow.insertCell(0),
cell2 = newRow.insertCell(1),
cell3 = newRow.insertCell(2),
name = document.getElementById("form").value,
amount = document.getElementById("amount").value;
delete1 = delete1 = '<input type="button" class="btn btn-danger" class="glyphicon glyphicon-trash"id="delete" value="Delete" onclick="deleteRow(this)">';
cell1.innerHTML = name;
cell2.innerHTML = amount;
cell3.innerHTML = delete1;
findTotal();
}
function findTotal(){
var arr = document.querySelectorAll("#datatable td:nth-child(2)");
var tot=0;
for(var i=0;i<arr.length;i++){
var enter_value = Number(arr[i].textContent)
if(enter_value)
tot += Number(arr[i].textContent);
}
document.getElementById('total').value = tot;
}
</script>
はHTMLです:これらの掻き取り値の
<form name="noc">
<input class="form-control input-lg" id="form" list="languages" placeholder="Search" type="text" required>
<br>
<input class="form-control input-lg" id="amount" list="languages" placeholder="Amount" type="number" required>
<br>
<button onclick="addRow(); return false;">Add Item</button>
</form>
<table id="datatable" class="table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>Nature of Collection</th>
<th>Amount</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
</tr>
</tbody>
</table>
データは、私は彼らが私のデータベースに保存されることを期待します。セル上。可能であれば、リストを列に挿入して後で取得できるようにします。
また、データベースをよりクリーンでより良い方法でリストを取得する方法はありますか?どんな助けもありがとうございます。ありがとうございました!
自分のWebアプリケーションのページをWebスクレイプすると、非常に間違ったように聞こえます。 – alecxe
@alecxeこの場合、あなたは何をお勧めしますか?私は同じ偶然にも同じ問題に遭遇します – Rekt