博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pyspider 示例
阅读量:4603 次
发布时间:2019-06-09

本文共 3114 字,大约阅读时间需要 10 分钟。

数据存放目录:

C:\Users\Administrator\data

升级版(可加载文章内所有多层嵌套的图片标签)

#!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2019-04-08 14:24:34# Project: qunaerfrom pyspider.libs.base_handler import *class Handler(BaseHandler):    crawl_config = {    }    @every(minutes=24 * 60)    def on_start(self):        self.crawl('https://travel.qunar.com/travelbook/list.htm', callback=self.index_page,validate_cert=False)    @config(age=10 * 24 * 60 * 60)    def index_page(self, response):        for each in response.doc('li > .tit>a').items():            self.crawl(each.attr.href, callback=self.detail_page,validate_cert=False,fetch_type='js',js_viewport_height='100000')        next1=response.doc('.next').attr.href        self.crawl(next1,callback=self.index_page,validate_cert=False)    @config(priority=2)    def detail_page(self, response):        imgs=response.doc('.js_memo_node').find('img')#获取id下的所有(包括多层嵌套的)img标签        img_list=''                                  #必须事先声明,否则return,img_list时会报错:引用未事先声明的局部变量        for img in imgs.items():            img_list+=img.attr.src+','              #把所有图片用,组合在一起                                                    #【复习】img_list=', '.join(['cats', 'rats', 'bats'])        return {            "url": response.url,            "title": response.doc('title').text(),            "date":response.doc('li.f_item.when > p > span.data').text(),            "day":response.doc('li.f_item.howlong > p > span.data').text(),            "text":response.doc('#b_panel_schedule').text(),            "img":img_list                    }#ele-3076663-2 > div.bottom > div.e_img_schedule > div > dl:nth-child(2) > dt > img

 

例子A

#!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2019-04-08 14:24:34# Project: qunaerfrom pyspider.libs.base_handler import *class Handler(BaseHandler):    crawl_config = {    }    @every(minutes=24 * 60)    def on_start(self):        self.crawl('https://travel.qunar.com/travelbook/list.htm', callback=self.index_page,validate_cert=False)    @config(age=10 * 24 * 60 * 60)    def index_page(self, response):        for each in response.doc('li > .tit>a').items():            self.crawl(each.attr.href, callback=self.detail_page,validate_cert=False,fetch_type='js',js_viewport_height='100000')#用js加载,指定页面高度,防止懒加载图片只加载一半        next1=response.doc('.next').attr.href        self.crawl(next1,callback=self.index_page,validate_cert=False)    @config(priority=2)    def detail_page(self, response):        #imgs=response.doc('#js_mainleft').find('img')        #for img in imgs.items():        #    img_list=img_list+img+','                return {            "url": response.url,            "title": response.doc('title').text(),            "date":response.doc('li.f_item.when > p > span.data').text(),            "day":response.doc('li.f_item.howlong > p > span.data').text(),            "text":response.doc('#b_panel_schedule').text(),            "img":response.doc('#js_mainleft').find('img').attr.src                    }#ele-3076663-2 > div.bottom > div.e_img_schedule > div > dl:nth-child(2) > dt > img

 

转载于:https://www.cnblogs.com/chenxi188/p/10689335.html

你可能感兴趣的文章
分享一种需求评审的方案
查看>>
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>
Server2016开发环境配置
查看>>
分布式光伏发电建设中的逆变器及其选型
查看>>
增强网络安全防御 推动物联网走向应用
查看>>
UML中关联,组合与聚合等关系的辨析
查看>>
《大数据管理概论》一3.2 大数据存储与管理方法
查看>>
PowerBuilder开发简单计算器
查看>>
怎样使用linux的iptables工具进行网络共享
查看>>
《HTML5与CSS3实战指南》——导读
查看>>
RHEL6下安装oracle 10g(一)
查看>>
Kconfig的格式
查看>>
关于Cursor的moveToFirst和moveToNext的意义
查看>>
个人--工资划分5份
查看>>
有关文件下载的文件名
查看>>
史上最详细的wamp配置虚拟域名步骤
查看>>
oracle 授权
查看>>
lv扩展磁盘空间
查看>>
java8之stream流的基本操作
查看>>
二维数组计算协方差java
查看>>