使用scrapy爬取某城市天气预报 编写爬虫项目,从https://www.tianqi.com网站爬取某城市(自选)的天气预报数据,并把爬取到的天气数据写入本地文本文件weather.txt。 提示: (1)安装Python扩展库scrapy,创建爬虫项目,将需要获取的字段名填写进去; (2)将爬取到的数据写入文件weather.txt;
时间: 2024-04-05 11:36:06 浏览: 483
好的,这是一个比较简单的爬虫项目,下面是具体操作步骤:
1. 安装 scrapy
使用 pip 安装 scrapy:
```
pip install scrapy
```
2. 创建 scrapy 项目
在命令行中进入要创建项目的目录,执行如下命令创建 scrapy 项目:
```
scrapy startproject weather
```
其中,weather 是项目名称。
3. 编写爬虫代码
在项目目录下的 weather/spiders 目录中创建 weather_spider.py 文件,编写如下代码:
```python
import scrapy
class WeatherSpider(scrapy.Spider):
name = 'weather'
allowed_domains = ['tianqi.com']
start_urls = ['https://www.tianqi.com/']
def parse(self, response):
city = 'beijing' # 自选城市
url = f'https://tianqi.com/{city}/'
yield scrapy.Request(url, callback=self.parse_weather)
def parse_weather(self, response):
date = response.css('.week>p::text').get()
weather = response.css('.weather span::text').get()
temperature = response.css('.weather .temp::text').get()
humidity = response.css('.weather .shidu::text').get()
wind = response.css('.weather .zi .name::text').get()
with open('weather.txt', 'a', encoding='utf-8') as f:
f.write(f'{date} {weather} {temperature} {humidity} {wind}\n')
```
以上代码定义了一个名为 WeatherSpider 的爬虫类,其中:
- `name` 属性指定了爬虫名称;
- `allowed_domains` 属性指定了允许爬取的域名;
- `start_urls` 属性指定了起始 URL;
- `parse` 方法用于解析起始页面,获取指定城市的天气预报页面 URL,并调用 `parse_weather` 方法进行解析;
- `parse_weather` 方法用于解析天气预报页面,获取日期、天气、温度、湿度和风力,并将数据写入文件 `weather.txt`。
4. 运行爬虫程序
在命令行中进入 scrapy 项目目录,执行如下命令运行爬虫程序:
```
scrapy crawl weather
```
爬虫程序会自动爬取指定城市的天气预报数据,并将数据写入 `weather.txt` 文件中。
阅读全文