一个完整的python爬取网易buff热门饰品数据,并以网页形式展示出来的代码
时间: 2023-09-20 18:04:48 浏览: 215
好的,以下是一个完整的Python爬取网易BUFF热门饰品数据,并以网页形式展示出来的代码:
```python
import requests
from bs4 import BeautifulSoup
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
url = 'https://buff.163.com/market/goods?game=csgo#tab=selling&page_num=1'
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.36 Edge/16.16299'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('div', {'class': 'items'})
data = []
for item in items:
name = item.find('div', {'class': 'name'}).get_text()
price = item.find('div', {'class': 'price'}).get_text()
data.append([name, price])
return render_template('index.html', data=data)
if __name__ == '__main__':
app.run(debug=True)
```
上面的代码中,我们定义了一个Flask应用,并在根路径下定义了一个视图函数index。在index函数中,我们使用requests和beautifulsoup库来爬取网易BUFF热门饰品数据,并将数据保存在一个列表中。最后,我们使用render_template方法将数据传递给模板文件index.html,并渲染模板文件生成HTML页面。
下面是index.html模板文件的代码:
```html
<!doctype html>
<html>
<head>
<title>网易BUFF热门饰品数据</title>
</head>
<body>
<table>
<thead>
<tr>
<th>名称</th>
<th>价格</th>
</tr>
</thead>
<tbody>
{% for item in data %}
<tr>
<td>{{ item[0] }}</td>
<td>{{ item[1] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
```
上面的代码中,我们使用了Jinja2模板引擎来渲染HTML页面。我们在模板文件中定义了一个表格,用于展示爬取到的数据。最后,我们使用for循环来遍历数据列表,并将每个饰品的名称和价格显示在表格中。
阅读全文