4、使用scrapy爬取某城市天气预报 编写爬虫项目,从https://www.tianqi.com网站爬取某城市(自选)的天气预报数据,并把爬取到的天气数据写入本地文本文件weather.txt。 提示: (1)安装Python扩展库scrapy,创建爬虫项目,将需要获取的字段名填写进去; (2)将爬取到的数据写入文件weather.txt;
时间: 2024-04-02 10:37:48 浏览: 113
python的scrapy框架爬取天气预报
以下是爬取某城市天气预报并写入本地文本文件weather.txt的Scrapy爬虫项目示例代码:
1. 创建Scrapy项目
在命令行中执行以下命令,创建一个名为weather_spider的Scrapy项目:
```
scrapy startproject weather_spider
```
2. 创建Spider
在weather_spider/spiders目录下创建一个名为weather.py的Spider,并添加以下代码:
```python
import scrapy
class WeatherSpider(scrapy.Spider):
name = "weather"
start_urls = [
"https://www.tianqi.com/xxxxx" # 将xxxxx替换为要爬取的城市的拼音缩写
]
def parse(self, response):
items = response.xpath('//div[@class="weatherbox"]/ul/li')
for item in items:
date = item.xpath('./h3/text()').extract_first()
weather = item.xpath('./p[@class="wea"]/text()').extract_first()
temperature = item.xpath('./p[@class="tem"]/span/text()').extract()
temperature = '/'.join(temperature)
yield {
"date": date,
"weather": weather,
"temperature": temperature
}
```
上述代码中,start_urls为爬虫的起始URL,name为爬虫的名称。parse方法用于解析响应,从中提取天气预报数据。这里提取的数据包括日期、天气状况和温度。
3. 编写Pipeline
在weather_spider目录下创建一个名为pipelines.py的Pipeline,并添加以下代码:
```python
class WeatherPipeline(object):
def __init__(self):
self.file = open("weather.txt", "w")
def process_item(self, item, spider):
line = item["date"] + "\t" + item["weather"] + "\t" + item["temperature"] + "\n"
self.file.write(line)
return item
def close_spider(self, spider):
self.file.close()
```
上述代码中,我们定义了一个名为WeatherPipeline的Pipeline,用于将爬取到的天气预报数据写入本地文本文件weather.txt中。在process_item方法中,我们将提取到的数据拼接成一行,并写入文件中。在close_spider方法中,我们关闭文件。
4. 配置Settings
在weather_spider目录下的settings.py文件中添加以下配置:
```python
ITEM_PIPELINES = {
"weather_spider.pipelines.WeatherPipeline": 300
}
```
上述配置用于启用我们刚刚编写的Pipeline。
5. 运行爬虫
在命令行中执行以下命令,运行爬虫:
```
scrapy crawl weather
```
注意,将weather替换为你定义的Spider的名称。
6. 查看结果
运行完爬虫后,我们可以在weather_spider目录下的weather.txt文件中查看爬取到的天气预报数据。
阅读全文