宜昌百度网站建设,好用建站模板,建站公司人员配置,上海注册公司注册在哪里比较好爬取网址#xff1a;https://search.jd.com/Search?keywordpython爬取信息#xff1a;书名#xff0c;价格#xff0c;出版社#xff0c;日期爬取方式#xff1a;scrapy框架 splash存储方式#xff1a;csv页面如下#xff0c;可以看到python相关的图书超过6000本。不…爬取网址https://search.jd.com/Search?keywordpython爬取信息书名价格出版社日期爬取方式scrapy框架 splash存储方式csv页面如下可以看到python相关的图书超过6000本。不过最终只能看到100页也就是6000本的信息。京东图书每个页面有60本图书页面打开时首先只加载30本书通过滚动条的下拉动态加载后面的30本书。所以我们要执行一下JavaScript代码使页面滚动到页面底部把剩余的30本书加载出来。翻页位于页面的底部可以定位翻页部分然后用scrollIntoView(true)实现拖拽显示翻页部分或使用window.scroll(起始点“,“结束点”)来实现页面的滚动加载。翻页规律第一页是page1,动态加载部分是page2,第二页是page3动态加载部分是page4。由于动态加载部分由splash完成对于翻页来说就是1,3,5向上叠加即可。spider的代码为# -*- coding: utf-8 -*-import scrapyfrom scrapy_splash import SplashRequestlua_script function main(splash)splash:go(splash.args.url) --打开页面splash:wait(2) --等待加载splash:runjs(document.getElementsByClassName(page)[0].scrollIntoView(true)) --运行js代码splash:wait(2) --等待加载return splash:html() --返回页面数据endclass JdPythonSpider(scrapy.Spider):name jd_pythonallowed_domains [jd.com]keyword python #填关键字base_urls https://search.jd.com/Search?keyword{}encutf-8.format(keyword)##重写start request方法指向parse_urlsdef start_requests(self):yield scrapy.Request(self.base_urls,callbackself.parse_urls)def parse_urls(self,response):pageNum response.xpath(//span[classfp-text]/i/text()).extract_first()# 构造每页的url向Splash的execute端点发送请求for i in range(pageNum):url {}page{}.format(self.base_urls,i*21)yield SplashRequest(url,endpointexecute,args{lua_source,lua_script},cache_args[lua_source],callbackself.parse)def parse(self, response):# 获取一个页面中每本书的名字和价格等for sel in response.css(ul.gl-warp.clearfix li.gl-item):yield {name: sel.css(div.p-name).xpath(string(.//em)).extract_first(),price: sel.css(div.p-price i::text).extract_first(),press: sel.css(span.p-bi-store a::text).extract_first(),date: sel.css(span.p-bi-date::text).extract_first(),}settings.py中添加以下信息SPLASH_URL http://192.168.99.100:8050 #splash服务地址#开启scrapy_splash的两个下载中间件并调整HttpCompressionMiddleware的次序DOWNLOADER_MIDDLEWARES {scrapy_splash.SplashCookiesMiddleware: 723,scrapy_splash.SplashMiddleware:725,scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware:810,}#设置去重过滤器DUPEFILTER_CLASS scrapy_splash.SplashAwareDupeFilter#支持cache_args(可选)SPIDER_MIDDLEWARES {scrapy_splash.SplashDeduplicateArgsMiddleware: 100,}USER_AGENT Mozilla/5.0 (Windows NT 10.0; WOW64) \AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3294.6 Safari/537.36ROBOTSTXT_OBEY FalseDOWNLOAD_DELAY 3在cmd运行scrapy crawl jd_python -o books.csv结果为注结果对data进行了降序排序。