由于喜欢玩POE流放之路,所以用这个论坛试试自己的新技能
程序语句都做了注释说明,下面是步骤
1.建立项目
scrapy startproject poebbs
2.建立爬虫
cd poebbs scrapy genspider poebd http://bbs.17173.com
3.编辑items.py
title = scrapy.Field() bbslink = scrapy.Field()
4.编辑poebd.py
import scrapy from poebbs.items import PoebbsItem #一定要记得导入item class PoebdSpider(scrapy.Spider): name = 'poebd' allowed_domains = ['bbs.17173.com'] start_urls = ['http://bbs.17173.com/forum-9987-1.html', #选择了3页内容来爬 'http://bbs.17173.com/forum-9987-2.html', 'http://bbs.17173.com/forum-9987-3.html' ] def parse(self, response): sites = response.css('.new') #需要的内容在class=’new‘内,所以就取了这个范围 for site in sites: item = PoebbsItem() item['title'] = site.css('.new .xst::text').extract_first() #这里是两个class,没有标签标识 item['bbslink'] = site.css('.new a::attr(href)').extract()[2] #这个网址在同一个class下,低3个a标签内,所以用这个语法 yield item
next_page = response.css('.pgs a::attr(href)').extract_first() #获取下一页链接
yield scrapy.Request(next_page, callback=self.parse, dont_filter=True) #请求下一页继续爬
5.编辑settings.py
FEED_EXPORT_ENCODING ='utf-8' #加入这两句防止保存中文文件时乱码
FEED_EXPORT_ENCODING = 'gb18030'
6.运行爬虫
scrapy crawl poebd -o note.csv #保存为表格文件
结果
2019-05-03