scrapy用xpath翻页爬取考研网页并保存至csv
时间: 2023-08-15 18:44:04 浏览: 179
以下是使用Scrapy和XPath翻页爬取考研网页并保存至CSV文件的示例代码:
```python
import scrapy
import csv
class KaoyanSpider(scrapy.Spider):
name = 'kaoyan'
allowed_domains = ['kaoyan.com']
start_urls = ['https://kaoyan.com/beijing/wl/']
def parse(self, response):
# 提取当前页面的学校列表
schools = response.xpath('//div[@class="college"]')
for school in schools:
name = school.xpath('.//h2/a/text()').get()
address = school.xpath('.//p[contains(text(),"地址")]/text()').get()
yield {
'name': name,
'address': address
}
# 提取下一页链接并发送请求
next_page = response.xpath('//a[@class="next"]/@href')
if next_page:
yield response.follow(next_page.get(), callback=self.parse)
def close(self, reason):
# 保存数据至CSV文件
data = self.crawler.stats.get('items')
with open('kaoyan.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['学校名称', '地址'])
for item in data:
writer.writerow([item['name'], item['address']])
```
在以上代码中,`parse`方法用于提取当前页面的学校列表,并使用`yield`语句返回每个学校的名称和地址。然后,使用XPath表达式提取下一页的链接,并使用`response.follow`方法发送请求获取下一页的数据。如果没有下一页链接,则停止爬取。
在Spider的`close`方法中,我们可以使用`self.crawler.stats.get('items')`获取所有的数据,并将其保存至CSV文件中。
阅读全文
相关推荐
















