scrapy实现二级页面爬取(以小说为例)

496次阅读
没有评论

1.scrapy图解scrapy实现二级页面爬取(以小说为例)
2.创建项目

scrapy startproject 项目名

创建后的目录
scrapy实现二级页面爬取(以小说为例)
3.编写字段
在items.py中编写需要的字段,这里就写小说的章节和内容

class XiaoshuoItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field()

#章节 page = scrapy.Field() #内容 content = scrapy.Field()

4.创建爬虫文件

scrapy genspider 文件名 域名

创建成功之后,在spiders中将会出现一个文件
scrapy实现二级页面爬取(以小说为例)
文件里面是这样的
scrapy实现二级页面爬取(以小说为例)
注意:parse方法不能修改名字,不然会报错,用来实现爬取网页
下面是案例:
由于小说每章的内容在下一个页面,我们需要进入下一个页面爬取数据需要重新再定义一个方法。同时,parse方法需要将下一个页面的路径和数据等传递给第二个方法。

class WangyouSpider(scrapy.Spider): name = 'wangyou' allowed_domains = ['www.800txt.net'] start_urls = ['https://www.800txt.net/book_112506/']

def parse(self, response): #节点 node_list = response.xpath("//dl/dd") for obj in node_list: #章节 page = obj.xpath('./a/text()')[0].extract() #二级页面路径 page_href = obj.xpath('./a/@href')[0].extract() page_href = self.start_urls[0]+page_href #将page赋值给item中,用来之后的抛出 item = XiaoshuoItem() item['page'] = page

yield scrapy.Request(url=page_href,callback=self.sec_handler,meta={'item':item})

scrapy.Request的常用参数: url:下一个页面的路径 callback:指定该请求返回的Response,由那个函数来处理。 meta:比较常用,在不同的请求之间传递数据使用的。字典dict型

第二个方法:用来爬取小说的内容

def sec_handler(self,response): item = response.meta['item'] #获取内容 content_list = response.xpath('//div[@id="content"]/text()') #处理,把字符串提取出来,并去掉空格 conecnt = '' for data in content_list: conecnt+=data.extract().replace(' ','') #赋值并抛出item item['content'] = conecnt return item

5.启动爬虫

scrapy crawl 爬虫名 -o 文件名.格式

格式有以下几种:
scrapy实现二级页面爬取(以小说为例)
到此为止,就成功了!

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-25发表,共计1411字。
新手QQ群:570568346,欢迎进群讨论 Python51学习