我是新來的蟒蛇,燒瓶和一般美麗的湯。 所以這裏是交易。我正在用Beautifulsoup從網上獲取一些數據。從Beautifulsoup解析列表或字典到燒瓶
from bs4 import BeautifulSoup
import requests
# PageURL's configure
mainpage = 'http://www.myauto.ge/'
pageurl = 'http://www.myauto.ge/?action=search&page='
pagenum = 0
# Looping Pages. Seems Wrong but doing its job?
for x in range(0, 2):
pagenum += 1
r = requests.get(pageurl + str(pagenum))
soup = BeautifulSoup(r.content, 'html.parser')
for cars in soup.find_all('div', {'class': 'car-info-wrapper'}):
cname = cars.find("div", {"class": "car-name-wrapper"}).find('a').get_text()
cyear = cars.find("p", {"class": "cr-levy car-year"}).get_text()
ceng = cars.find("div", {"class": "cr-det-in cr-engine"}).p.get_text()
cengroad = cars.find("div", {"class": "cr-det-in cr-road"}).p.get_text()
# clink = cars.find('a').get('href')
當我打印cname,cyear,ceng和cengroad它的工作完美就像我想要的一樣。但現在我正試圖在燒瓶中做到這一點。而不是在sqlite3中創建數據庫,我希望它能簡單地抓取數據並將其解析爲index.html。
這是我的app.py燒瓶代碼。
# Import
from flask import Flask, render_template
import requests
from bs4 import BeautifulSoup
app = Flask(__name__)
# mainpage = 'http://www.myauto.ge/'
pageurl = 'http://www.myauto.ge/?action=search&page='
# pagenum = 0
# Our index
@app.route('/')
@app.route('/index')
def index():
# for x in range(0, 2):
# pagenum += 1
r = requests.get(pageurl)
soup = BeautifulSoup(r.content, 'html.parser')
data = []
for cars in soup.find_all('div', {'class': 'car-info-wrapper'}):
cname = cars.find("div", {"class": "car-name-wrapper"}).find('a').get_text()
data.append(cname)
datayear =[]
for cars in soup.find_all('div', {'class': 'car-info-wrapper'}):
cyear = cars.find("p", {"class": "cr-levy car-year"}).get_text()
datayear.append(cyear)
return render_template("index.html", data=data,datayear=datayear)
if __name__ == '__main__':
app.run(debug=True)
這是我的index.html
{% extends "base.html" %}
{% block body %}
<table class="table">
<thead>
<tr>
<th>Car</th>
<th>Year</th>
<th>Engine</th>
<th>Road so far</th>
</tr>
</thead>
<tbody>
<tr>
<td> {{ data }} </td>
<td> {{ datayear }} </td>
</tr>
</tbody>
</table>
{% endblock %}
3210
如果嘗試
<tr>
{% for x in data %}
<td> {{ x }} </td>
<td> </td>
</tr>
I get what i want but only for Car name
所以如何用C做同年相同
<tr>
{% for x in data %}
<td> {{ carname }} </td>
<td> {{ caryear }} </td>
</tr>
或者做這樣的事情,然後分割列表?
data = []
for cars in soup.find_all('div', {'class': 'car-info-wrapper'}):
cname = cars.find("div", {"class": "car-name-wrapper"}).find('a').get_text()
cyear = cars.find("p", {"class": "cr-levy car-year"}).get_text()
data.append(cname)
data.append(cyear)
或者我應該嘗試沒有列表和字典?我只是不想使用分貝。
感謝您的閱讀。
你知道如何使類在Python工作? –
沒有:(但我正在學習辛苦的方式:) –
像字面意思是「學習python的硬道路」?在這個網站上的某個地方列出了所有這些指南的錯誤 –