、安装Python扩展库scrapy,然后编写爬虫项目,从网站 http://www.weather.com.cn/shandong/index.shtml 爬取山东各城市的天气预报数据,并把爬取到的天气数据写入本地文本文件 weather.txt。
时间: 2024-12-17 18:31:30 浏览: 26
首先,为了安装Python的Scrapy扩展库,你需要确保已经安装了Python和pip(Python包管理工具)。如果没有,请先安装它们。你可以通过以下命令安装Scrapy:
```bash
pip install scrapy
```
接下来,创建一个新的Scrapy项目。在命令行中导航到你想存放项目的目录,然后输入:
```bash
scrapy startproject weather_spider
```
这将生成一个名为weather_spider的文件夹,其中包含基本的Scrapy结构。
进入项目目录:
```bash
cd weather_spider
```
现在,在`spiders`文件夹下创建一个新的爬虫文件,例如`shandong_weather.py`:
```python
import scrapy
class ShandongWeatherSpider(scrapy.Spider):
name = "shandong_weather"
allowed_domains = ["weather.com.cn"]
start_urls = ["http://www.weather.com.cn/shandong/index.shtml"]
def parse(self, response):
# 使用CSS选择器找到城市名称和天气信息
cities_data = response.css('div#main ul li')
for city in cities_data:
city_name = city.css('a::text').get()
city_weather = city.css('.city_wenqi .weather::text').get()
yield {
'city': city_name,
'weather': city_weather,
}
# 下一页链接,如果存在的话
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
# 编辑settings.py文件,设置保存数据的路径
with open('settings.py', 'a') as f:
f.write('\nFEED_FORMAT = "txt"\nFEED_URI = "weather.txt"')
```
最后,运行爬虫:
```bash
scrapy crawl shandong_weather
```
这个脚本会开始爬取指定页面并按照规则提取数据,结果会被写入名为`weather.txt`的文本文件中。注意,实际爬取过程中可能会遇到反爬策略,如需要处理验证码、动态加载内容等,需要根据实际情况做相应调整。
阅读全文