2、安装Python扩展库scrapy,然后编写爬虫项目,从网站 http://www.weather.com.cnshandong/index.shtml爬取山东各城市的天气预报数据,并把爬取到的天气数据写入本地文本文件 weather.txt。
时间: 2024-12-24 18:20:22 浏览: 2
【Scrapy爬虫项目】爬取books.toscrape.com上书籍的相关信息并存储为csv文件
首先,你需要安装Python环境以及Scrapy库,如果你还没有安装,可以按照以下步骤进行:
1. **安装Python** (如果尚未安装): 可以访问https://www.python.org/downloads/ 下载适合你的系统的Python版本。
2. **安装pip** (包管理器): 打开命令行,运行 `python get-pip.py` 或者在Linux/Mac上使用 `curl https://bootstrap.pypa.io/get-pip.py | python` 安装pip。
3. **安装Scrapy**: 使用pip安装Scrapy,输入 `pip install scrapy`。
4. **创建新项目**: 进入你想存放项目的目录,使用 `scrapy startproject weather_spider` 创建一个新的Scrapy项目。
5. **进入项目目录**: 进入刚创建的项目文件夹,如`cd weather_spider`。
6. **配置爬虫**:
- 在`settings.py`文件中,更新`USER_AGENT`字段,设置合理的用户代理以避免被网站识别为机器人。
- 需要修改`SPIDER_MODULES`和`NEWSPIDER_MODULE`以指向包含新爬虫的模块,例如:
```
SPIDER_MODULES = ['weather_spider.spiders']
NEWSPIDER_MODULE = 'weather_spider.spiders'
```
7. **定义爬虫**: 在`spiders`文件夹下新建一个文件,比如`chengdu_weather.py`,使用Scrapy的BaseSpider作为基础,并定义解析规则。示例代码如下(假设只抓取部分内容):
```python
import scrapy
class WeatherSpider(scrapy.Spider):
name = "weather"
allowed_domains = ["weather.com.cn"]
start_urls = ["http://www.weather.com.cn/shandong/index.shtml"]
def parse(self, response):
city_data = response.xpath('//div[@class="city"]')
for city in city_data:
city_name = city.xpath('.//h3/text()').get()
temperature = city.xpath('.//span[@class="temperature"]/text()').get()
# 更多信息提取...
yield {
'city': city_name,
'temperature': temperature,
}
# 提取更多页面链接,如果是分页的情况
next_page = response.css('li.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
```
8. **运行爬虫**:
在项目根目录下,输入 `scrapy crawl weather` 来启动爬虫。它将开始抓取并保存数据。
9. **数据存储**:
爬虫默认会将数据存放在`items`文件夹下的`json`文件中。如果你想直接写入文本文件,可以在`parse()`函数中添加相应的代码,如:
```python
with open('weather.txt', 'w', encoding='utf-8') as f:
for item in items:
f.write(f"{item['city']}: {item['temperature']}\n")
```
完成以上步骤后,你应该能在`weather.txt`文件中看到从指定网页抓取的天气数据了。
阅读全文