由于喜欢玩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