实战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库,并使用了正则表达式来处理数据。