ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pyspider框架的使用

2020-09-02 17:02:12  阅读:222  来源: 互联网

标签:obj 框架 self each 使用 pyspider save response


pip install pyspider

安装成功后需要把 werkzeug 版本降低到 0.16.1
pip install werkzeug==0.16.1

# 查看 pyspider
pyspider --help

# 启动 pyspider
pyspider all

pyspider web界面高度不够

找到pyspider包下面的 debug.min.css 文件

找到

iframe{border-width:0;width:100%}

改为

iframe{border-width:0;width:100%;height:900px; !important}

中文乱码 需要自己在项目中转码一下即可

response.content = (response.content).decode('gb2312') # 目标网站编码

出现ssl证书找不到的错误 599,

只需要在self.crawl()方法中添加

,validate_cert=False

但是有一点得注意,Handler方法中,

不止一个self.crawl()方法,

应在全文中的self.crawl()方法中都添加validate_cert=False.

# 例子:

from pyspider.libs.base_handler import *
from string import Template
# 连接数据库
import pymysql
      
class Handler(BaseHandler):
    crawl_config = {
        'itag':'v235444'
    }
    
    def __init__(self):
        self.db = pymysql.connect(host='localhost', port=3306,user='root', password='root',db='shootdb',charset='utf8')


    def save_in_mysql(self, obj):
        try:
            cursor = self.db.cursor()
            #print('obj',obj)
            sql = Template('INSERT INTO goods(g_date,g_title,g_bigUrl,g_smallUrl,g_class) VALUE("$date","$title","$bigUrl","$smallUrl","$g_class")')
            sql = sql.substitute(date=obj.get('date'),title=obj['title'],bigUrl=obj['BigUrl'],smallUrl=obj['smallUrl'],g_class=obj['g_class'])
            #sql = 'INSERT INTO table(date,title,url) VALUES ()'  # 插入数据库的SQL语句
            print(sql)
            cursor.execute(sql)
        
            self.db.commit()
        except Exception as e:
            #print(e) 
            self.db.rollback()

        
    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://www.ry520.com/photo/list_5.html', callback=self.index_page,validate_cert=False)
    
    # 进入大图页面,爬取大图字段信息
    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        
        for b,each in enumerate(response.doc('.a-zuopin li a').items()):
            doc = {
            'BigUrl':each.attr.href,
            'title':each.find('.cite h3').text(),
            'date':each.find('.cite p').text(),
            'smallUrl':[],
            'g_class':'婚纱客照'
            }
            #print(each.attr.href)
            a = each.find('img').attr.src
            self.crawl(a,callback=self.bigImg,save=[doc,b+19],validate_cert=False)

            #self.save_in_mysql(doc)
        
    def bigImg(self,response):
        
            

        self.crawl(response.save[0]['BigUrl'],callback=self.smallImg,save=[response.save[0],response.save[1],'/images/Wedding/WeddingGuestBig-'+ str(response.save[1]) +'.jpg'],validate_cert=False) 

       
                                                             

       
    def smallImg(self,response):
        obj = response.save[0]
        for i,each in enumerate(response.doc('.entry img').items()):  
            detail = '/images/Wedding/WeddingGuestBig-'+ str(response.save[1])+ '-' + str(i+1) +'.jpg'
            #print(detail)
            obj['smallUrl'].append(detail)                          
            
        obj['BigUrl'] = response.save[2]
        self.save_in_mysql(obj)

 

标签:obj,框架,self,each,使用,pyspider,save,response
来源: https://www.cnblogs.com/lin961234478/p/13602660.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有