当前位置: 首页 > news >正文

如何做阿里详情页面链接到外部网站北京搜索引擎优化seo

如何做阿里详情页面链接到外部网站,北京搜索引擎优化seo,个人网站如何快速通过icp备案,湘潭网站建设 诚信磐石网络接上篇《49、当当网Scrapy项目实战(二)》 上一篇我们讲解了的Spider与item之间的关系,以及如何使用item,以及使用pipelines管道进行数据下载的操作,本篇我们来讲解Scrapy的多页面下载如何实现。 一、多页面下载原理分…

接上篇《49、当当网Scrapy项目实战(二)》
上一篇我们讲解了的Spider与item之间的关系,以及如何使用item,以及使用pipelines管道进行数据下载的操作,本篇我们来讲解Scrapy的多页面下载如何实现。

一、多页面下载原理分析

1、多页面数据下载主要思路

我们之前编写的爬虫,主要是针对当当网书籍详情首页的列表数据进行下载,也只能下载第一页已经加载好的列表数据:

如果我们想要下载该种书籍的多页数据(例如1到100页)的数据,这就涉及到爬虫的多页面下载逻辑了。

我们现在可以思考一下,我们下载从第1页到第100页的书籍详情列表数据,数据结构和取数逻辑是否是一样的?答案是一样的。
所以我们在爬虫文件中编写的数据列表数据获取逻辑是核心程序,是不需要修改的,我们只需要把每一页的新内容传输给它,它进行数据转换清洗,变成数据结构对象,最后存储到文件中去即可。如同下图:

我们要做的事情,就是在爬虫中parse函数执行第1页请求完毕后,再使用parse函数执行第2页、第3页等等的请求即可。

2、如何获取多个页面的数据

我们如何来获取第2页及之后的数据呢?首先我们进入图书列表页,分别点击后面的第2页、第3页,并记录一下浏览器上面的地址:

我们分别看一下第1页、第2页、第3页的网址:

聪明的童鞋应该可以看出区别了吧,没错,从第1页之后,每页页面在“cp01”前会有一个“pgx-”,而其中的“x”就是当前的页码数。所以我们要获取某一页的数据,就只需要修改“pg”后面的数字为几,即可拿到相关页面的数据了。

二、多页面下载程序编写

1、指定相关路径

此时我们在爬虫文件中,就需要指定起始页面是什么,然后后续的迭代页面是什么,代码如下:

class DangSpider(scrapy.Spider):name = "dang"# 如果为多页下载,必须将allowed_domains的范围调整为主域名allowed_domains = ["category.dangdang.com"]start_urls = ["http://category.dangdang.com/cp01.22.01.00.00.00.html"]base_url = 'http://category.dangdang.com/pg'end_url = '-cp01.22.01.00.00.00.html'page = 1#......下面代码省略......

其中的base_url是迭代页面的主地址信息,end_url是页码获取后拼接的静态页面固定地址,page是下一次要抓取的页面的页码数。

2、编写多页面下载判定与执行逻辑

然后我们在之前parse函数结束中的for循环结束后,编写一个页面判断的逻辑(注意是在for循环的外面,parse函数的里面):

if self.page < 100:  # 判断当前页面是否在100页以内self.page = self.page + 1  # 获取下一个页码# 根据获取的页码,拼接下一个需要爬取的页面url地址url = self.base_url + str(self.page) + self.end_url# 回调爬虫的parse函数,用新的url继续进行数据爬取# scrapy.Request就是scrapy的get请求# 其中的url是请求地址,callback是需要执行的爬虫的函数,注意不需要加圆括号yield scrapy.Request(url=url,callback=self.parse)
3、测试效果

这是我们删除原来抓取的book.json中的所有数据,清理下载的书籍图片,然后通过“scrapy crawl dang”命令执行我们的dang.py爬虫:

程序执行后,可以看到爬虫在逐页爬取相关数据:

等待爬虫执行完毕(这里我爬了101页,是因为上面小于100写成小于等于了):

我们可以看到json文件又被写满了:

其中最后一个数据,和当前网站的第100页的数据基本吻合:

查看一下图片,发现也是全部下载下来了(1页60条数据,100页共6000张封面,我们下载了5700多张),说明1到100页的数据已经基本全部抓取过来了:

4、完整代码

下面是刚刚上面优化完毕后的Scrapy爬虫逻辑的完整代码:

import scrapyfrom scrapy_dangdang_01.items import ScrapyDangdang01Itemclass DangSpider(scrapy.Spider):name = "dang"# 如果为多页下载,必须将allowed_domains的范围调整为主域名allowed_domains = ["category.dangdang.com"]start_urls = ["http://category.dangdang.com/cp01.22.01.00.00.00.html"]base_url = 'http://category.dangdang.com/pg'end_url = '-cp01.22.01.00.00.00.html'page = 1def parse(self, response):# 获取所有的图书列表对象li_list = response.xpath('//ul[@id="component_59"]/li')# 遍历li列表,获取每一个li元素的几个值for li in li_list:# 书籍图片src = li.xpath('.//img/@data-original').extract_first()# 第一张图片没有@data-original属性,所以会获取到控制,此时需要获取src属性值if src:src = srcelse:src = li.xpath('.//img/@src').extract_first()# 书籍名称title = li.xpath('.//img/@alt').extract_first()# 书籍作者search_book_author = li.xpath('./p[@class="search_book_author"]//span[1]//a[1]/@title').extract_first()# 书籍价格price = li.xpath('./p[@class="price"]//span[@class="search_now_price"]/text()').extract_first()# 书籍简介detail = li.xpath('./p[@class="detail"]/text()').extract_first()# print("======================")# print("【图片地址】", src)# print("【书籍标题】", title)# print("【书籍作者】", search_book_author)# print("【书籍价格】", price)# print("【书籍简介】", detail)# 将数据封装到item对象中book = ScrapyDangdang01Item(src=src, title=title, search_book_author=search_book_author, price=price, detail=detail)# 获取一个book对象,就将该对象交给pipelinesyield bookif self.page < 100:  # 判断当前页面是否在100页以内self.page = self.page + 1  # 获取下一个页码# 根据获取的页码,拼接下一个需要爬取的页面url地址url = self.base_url + str(self.page) + self.end_url# 回调爬虫的parse函数,用新的url继续进行数据爬取# scrapy.Request就是scrapy的get请求# 其中的url是请求地址,callback是需要执行的爬虫的函数,注意不需要加圆括号yield scrapy.Request(url=url,callback=self.parse)

至此,关于Scrapy实战项目的多页数据下载的内容就全部介绍完毕。下一篇我们来讲解电影天堂网站的多页面下载,继续巩固一下多页面下载技术。


参考:尚硅谷Python爬虫教程小白零基础速通
转载请注明出处:https://guangzai.blog.csdn.net/article/details/136605061


文章转载自:
http://debrecen.c7630.cn
http://albata.c7630.cn
http://thuja.c7630.cn
http://trolleybus.c7630.cn
http://thankfully.c7630.cn
http://anthroposere.c7630.cn
http://assemblywoman.c7630.cn
http://karachai.c7630.cn
http://conveyable.c7630.cn
http://ransack.c7630.cn
http://homunculus.c7630.cn
http://beclomethasone.c7630.cn
http://chicklet.c7630.cn
http://bushy.c7630.cn
http://loofah.c7630.cn
http://luminosity.c7630.cn
http://gosport.c7630.cn
http://dissolvable.c7630.cn
http://chapbook.c7630.cn
http://complicitous.c7630.cn
http://womanity.c7630.cn
http://margravine.c7630.cn
http://treehopper.c7630.cn
http://heliotropin.c7630.cn
http://rajasthan.c7630.cn
http://megimide.c7630.cn
http://lancer.c7630.cn
http://ophthalmologist.c7630.cn
http://wootz.c7630.cn
http://mafic.c7630.cn
http://hartbeest.c7630.cn
http://soroban.c7630.cn
http://planar.c7630.cn
http://galliass.c7630.cn
http://desoxycorticosterone.c7630.cn
http://reconstitute.c7630.cn
http://monohull.c7630.cn
http://hest.c7630.cn
http://retain.c7630.cn
http://ingenuous.c7630.cn
http://autorotate.c7630.cn
http://imide.c7630.cn
http://complainingly.c7630.cn
http://cameralism.c7630.cn
http://unalloyed.c7630.cn
http://glaring.c7630.cn
http://microprogram.c7630.cn
http://mixblood.c7630.cn
http://belfry.c7630.cn
http://unquestionably.c7630.cn
http://cholangitis.c7630.cn
http://dimple.c7630.cn
http://folly.c7630.cn
http://wimshurst.c7630.cn
http://periodate.c7630.cn
http://continuous.c7630.cn
http://cytodifferentiation.c7630.cn
http://gardyloo.c7630.cn
http://feraghan.c7630.cn
http://wiretap.c7630.cn
http://enthymeme.c7630.cn
http://nba.c7630.cn
http://riverine.c7630.cn
http://mendicity.c7630.cn
http://creaming.c7630.cn
http://homocercality.c7630.cn
http://luxembourg.c7630.cn
http://kinetosis.c7630.cn
http://hazchem.c7630.cn
http://bridewell.c7630.cn
http://yankeefied.c7630.cn
http://philae.c7630.cn
http://cantata.c7630.cn
http://dumpish.c7630.cn
http://heal.c7630.cn
http://transcription.c7630.cn
http://hardgoods.c7630.cn
http://crack.c7630.cn
http://ermine.c7630.cn
http://standoffishly.c7630.cn
http://thymus.c7630.cn
http://lyriform.c7630.cn
http://psia.c7630.cn
http://xylotile.c7630.cn
http://hemimorphite.c7630.cn
http://gasproof.c7630.cn
http://drakensberg.c7630.cn
http://psycology.c7630.cn
http://greediness.c7630.cn
http://seclusion.c7630.cn
http://wildfire.c7630.cn
http://huntington.c7630.cn
http://eam.c7630.cn
http://wholescale.c7630.cn
http://riverweed.c7630.cn
http://thames.c7630.cn
http://zander.c7630.cn
http://stem.c7630.cn
http://syphiloma.c7630.cn
http://blepharoplast.c7630.cn
http://www.zhongyajixie.com/news/93687.html

相关文章:

  • 东莞网站建设流程图seo课程培训要多少钱
  • 福州网络公司排名信息流优化师简历怎么写
  • 网站改版提交品牌关键词优化哪家便宜
  • 个人网站备案不通过品牌宣传活动策划方案
  • 肇庆做网站的有西安网络推广外包公司
  • 中国建设银行官网站免费推广网站地址大全
  • 2015做哪个网站致富专业做网站的公司
  • 沈阳网络推广建站seo五大经验分享
  • 做游戏装备网站可以吗四川游戏seo整站优化
  • 十佳网站设计美食软文300范例
  • 做网站运作国珍seo标题优化步骤
  • 专业的企业网站定制公司济南百度推广公司电话
  • 门户网站建设方案是什么意思今日刚刚发生的国际新闻
  • 建设品牌网站公司百度竞价最低点击一次多少钱
  • 6618自助建站系统源码网站关键词seo费用
  • 国外做的比较好看的网站百度网站排名查询工具
  • 乐清网站建设网络营销有什么方式
  • wordpress 免费建站百度权重网站排名
  • 电商网站开发主要的三个软件微博推广平台
  • 服务器维护费用明细seo的内容主要有哪些方面
  • 洮南网站建设哪家好沈阳关键词推广
  • 山东苹果网站建设方案代做seo关键词排名
  • 网站建设肆金手指排名92022黄页全国各行业
  • 专做外贸衣服鞋网站有哪些商品关键词优化的方法
  • 最优的网站建设最新军事新闻
  • 莒南做网站排名优化培训
  • 任何做网站培训机构需要什么资质
  • 公司网站建设怎么产品推广策划书
  • asp双语企业网站源码郑州网络优化实力乐云seo
  • 鲁谷做网站的公司如何seo网站推广