用scrapy爬取考研相关数据并存储到mongdb和csv中的代码
时间: 2023-09-19 12:10:57 浏览: 136
14_Scrapy爬取数据并存储至数据库.zip
好的,下面是一个示例代码,可以实现将考研相关数据存储到MongoDB和CSV文件中:
```python
import scrapy
import pymongo
import csv
class KaoyanSpider(scrapy.Spider):
name = 'kaoyan'
allowed_domains = ['www.kaoyan.com']
start_urls = ['https://www.kaoyan.com/']
def parse(self, response):
# 解析页面数据,提取考研相关信息
items = response.xpath('//div[@class="content"]/ul/li')
for item in items:
name = item.xpath('.//h2/a/text()').get()
school = item.xpath('.//h3/a/text()').get()
major = item.xpath('.//p/text()').get()
score = item.xpath('.//span/text()').get()
# 将数据存储到MongoDB中
self.save_to_mongodb(name, school, major, score)
# 将数据存储到CSV文件中
self.save_to_csv(name, school, major, score)
def save_to_mongodb(self, name, school, major, score):
# 连接MongoDB数据库
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['kaoyan']
collection = db['scores']
# 插入数据到数据库中
data = {'name': name, 'school': school, 'major': major, 'score': score}
collection.insert_one(data)
def save_to_csv(self, name, school, major, score):
# 将数据写入CSV文件中
with open('kaoyan.csv', 'a', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow([name, school, major, score])
```
在上述代码中,我们定义了一个名为`KaoyanSpider`的Spider,用于爬取考研相关数据。在`parse`函数中,我们使用XPath选择器提取页面数据,并将其存储到MongoDB和CSV文件中。数据存储到MongoDB中需要先连接到MongoDB数据库,然后通过`insert_one`方法插入数据;数据存储到CSV文件中则使用Python内置的csv模块实现,通过`writerow`方法将数据写入CSV文件中。
需要注意的是,MongoDB和CSV文件的存储路径和格式可以根据自己的需求进行修改。此外,为了保证爬虫的稳定性和可靠性,我们还需要进行异常处理、反爬虫处理等操作,以避免被网站封禁或数据出现异常。
阅读全文