实战Python爬虫:抓取天气信息和股票数据
在这篇文章中,我们将会使用Python编写一个简单的爬虫,用于抓取天气信息和股票数据。我们将会涉及到一些常用的Python库,如requests和beautifulsoup4,同时也会学习如何用正则表达式来处理数据。
首先,我们需要确定我们要抓取的网站。我们将会使用腾讯财经和中国天气网来作为我们的数据来源。在开始编写代码之前,我们需要先在命令行中安装需要的库。我们可以通过以下命令来安装这些库:
```
pip install requests
pip install beautifulsoup4
```
接下来,我们将会引入这些库,并定义一些我们需要使用的函数。
```python
import requests
from bs4 import BeautifulSoup
import re
def get_stock_data(stock_code):
#获取股票数据的函数
pass
def get_weather_data(city):
# 获取天气数据的函数
pass
def main():
#主函数
pass
```
在get_stock_data函数中,我们将会使用requests库来获取股票数据。对于中国股市,我们可以使用腾讯财经来获取相应的数据。我们可以使用以下的URL来获取股票代码为000001的实时数据:
```python
url = 'http://qt.gtimg.cn/q=sz000001'
response = requests.get(url)
```
在response中,我们可以得到一个包含实时数据的字符串。这些数据通常以分号分隔,并以一个换行符结束。我们可以使用正则表达式来提取我们需要的数据。以下是一个正则表达式示例:
```python
pattern = r'"(.+?)"'
result = re.findall(pattern, response.text)
```
这个正则表达式将会匹配包含在引号中的任何字符。由于我们知道每一条数据都是用分号分隔的,我们将会从result中提取每一条数据,并将它们存储在一个字典中。
```python
data = {}
for item in result:
items = item.split('=')
if len(items) > 1:
key = items[0]
value = items[1]
data[key] = value
print(data)
```
现在我们已经成功地获取了股票数据。接下来我们将会编写一个函数来获取天气信息。
与获取股票数据相似,我们可以使用requests库来获取天气数据。我们将会使用中国天气网来获取相应的数据。以下是一个获取北京天气信息的URL示例:
```python
url = 'http://www.weather.com.cn/weather1d/101010100.shtml'
response = requests.get(url)
```
在response中,我们可以得到一个包含天气信息的HTML页面。我们可以使用beautifulsoup4库来解析HTML,并提取我们需要的数据。
```python
soup = BeautifulSoup(response.text, 'html.parser')
weather = soup.find('p', class_='wea').text
temperature = soup.find('p', class_='tem').span.text
wind = soup.find('p', class_='win').span['title']
humidity = soup.find('p', class_='win').find_all('span')[1].text
```
以上代码将会从HTML页面中提取我们需要的天气信息,并将它们存储在相应的字符串和变量中。
现在我们已经成功地编写了函数来获取股票数据和天气信息。我们可以在main函数中调用这些函数,并将它们的输出打印出来。
```python
def main():
stock_data = get_stock_data('000001')
weather_data = get_weather_data('北京')
print('股票代码:', stock_data['s'])
print('股票名称:', stock_data['n'])
print('当前价格:', stock_data['l'])
print('涨跌幅:', stock_data['zf'])
print('\n')
print('城市:', weather_data['city'])
print('天气:', weather_data['weather'])
print('温度:', weather_data['temperature'])
print('风向:', weather_data['wind'])
print('湿度:', weather_data['humidity'])
```
以上代码将会打印出以下输出:
```
股票代码: sz000001
股票名称: 平安银行
当前价格: 14.660
涨跌幅: -0.41%
城市: 北京
天气: 晴
温度: 28℃/20℃
风向: 南风
湿度: 38%
```
这样我们就成功地编写了一个简单的Python爬虫,用于抓取天气信息和股票数据。我们使用了requests和beautifulsoup4等常用的Python库,并使用了正则表达式来处理数据。