用python代码实现爬取东方财富网上的数据,程序要有数据爬取、存储在MongoDB、展示过程。数据爬取、存储、展示过程要在flask web程序中控制。
时间: 2023-07-15 07:14:13 浏览: 127
这是一个比较复杂的任务,需要涉及到爬虫、数据库、Web开发等多个方面的知识。下面我会给出一个大体的思路,但具体实现还需要根据自己的实际情况进行调整和完善。
1. 爬虫部分:使用requests库进行网页请求,并通过BeautifulSoup库解析网页内容,获取所需数据。可以使用xpath或者正则表达式进行数据提取。具体代码如下:
```
import requests
from bs4 import BeautifulSoup
import re
url = "http://quote.eastmoney.com/center/gridlist.html#hs_a_board"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
data = []
for item in soup.find_all("tr", attrs={"class": re.compile("(odd)|()even.*")}):
td = item.find_all("td")
data.append({
"code": td[1].string,
"name": td[2].string,
"price": td[3].string,
"change": td[4].string,
"change_percent": td[5].string
})
```
2. 数据库部分:使用pymongo库连接MongoDB数据库,并将爬取的数据存储到指定的集合中。具体代码如下:
```
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["stock_db"]
collection = db["stock_collection"]
collection.insert_many(data)
```
3. Web部分:使用Flask框架构建Web应用程序,通过路由实现页面跳转和数据展示。具体代码如下:
```
from flask import Flask, render_template
import pymongo
app = Flask(__name__)
@app.route('/')
def index():
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["stock_db"]
collection = db["stock_collection"]
data = collection.find()
return render_template('index.html', data=data)
if __name__ == '__main__':
app.run(debug=True)
```
4. 页面部分:使用HTML和CSS构建页面,并通过Flask模板引擎渲染数据。具体代码如下:
```
<!DOCTYPE html>
<html>
<head>
<title>股票数据展示</title>
</head>
<body>
<table>
<thead>
<tr>
<th>代码</th>
<th>名称</th>
<th>价格</th>
<th>涨跌额</th>
<th>涨跌幅</th>
</tr>
</thead>
<tbody>
{% for item in data %}
<tr>
<td>{{ item.code }}</td>
<td>{{ item.name }}</td>
<td>{{ item.price }}</td>
<td>{{ item.change }}</td>
<td>{{ item.change_percent }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
```
这样,就完成了一个简单的爬取东方财富网股票数据,并通过Flask展示数据的程序。需要注意的是,实际应用中还有很多细节需要考虑,比如页面美化、异常处理、数据更新等等。
阅读全文