51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1457|回复: 0
打印 上一主题 下一主题

Pyspider使用过程教程以及若干问题记录

[复制链接]
  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 527 天

    连续签到: 4 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-11-29 13:35:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2018-11-29 13:47 编辑

    使用教程











    4, pyspider中的操作界面截图 Case2
    代码示例如下:
    1. #!/usr/bin/env python
    2. # -*- encoding: utf-8 -*-
    3. # Created on 2018-08-13 13:22:16
    4. # Project: repospider

    5. from pyspider.libs.base_handler import *


    6. class Handler(BaseHandler):
    7.     crawl_config = {
    8.     }

    9.     @every(minutes=24 * 60)
    10.     def on_start(self):
    11.         self.crawl('http://www.reeoo.com', callback=self.index_page)

    12.     @config(age=10 * 24 * 60 * 60)
    13.     def index_page(self, response):
    14.         for each in response.doc('div[class="thumb"]').items():

    15.             detail_url = each('a').attr('href')
    16.             print(detail_url)
    17.             self.crawl(detail_url, callback=self.detail_page)

    18.     @config(priority=2)
    19.     def detail_page(self, response):
    20.         header = response.doc('body > article > section > header')
    21.         title = header('h1').text()

    22.         tags = []
    23.         for each in header.items('a'):
    24.             tags.append(each.text())

    25.         content = response.doc('div[id="post_content"]')
    26.         description = content('blockquote > p').text()

    27.         website_url = content('a').attr.href

    28.         image_url_list = []
    29.         for each in content.items('img[data-src]'):
    30.            image_url_list.append(each.attr('data-src'))

    31.         return {
    32.             "title": title,
    33.             "tags": tags,
    34.             "description": description,
    35.             "image_url_list": image_url_list,
    36.             "website_url": website_url
    复制代码

    问题记录1.
    问题1
    问题的错误信息:
    1. Exception: HTTP 599: Unable to communicate securely with peer: requested domain name does not match the server's certificate.
    复制代码

    解决的办法:

    将代码中的基于https开头的地址,切换为http即可。实际的url地址还是https。

    办法2: 设置crawl的参数 validate_cert=False

    使用Pyspider过程中的nginx代理
    将Nginx的端口直接映射到web服务的端口:
    1. vim /etc/nginx/nginx/conf
    复制代码

    文件的内容修改如下:
    “`
    server {
    listen 8080;
    server_name localhost;
    root /usr/share/nginx/html;
    1.   location  / {
    2.          proxy_pass http://127.0.0.1:5000;
    3.      }

    4.     error_page 404 /404.html;
    5.         location = /40x.html {
    6.     }

    7.     error_page 500 502 503 504 /50x.html;
    8.         location = /50x.html {
    9.     }
    10. }
    复制代码

    “ 将nginx代理的主机8080映射为内部的5000端口。
    pyspider中的操作界面截图 Case1
    • case1:
    1. #!/usr/bin/env python
    2. # -*- encoding: utf-8 -*-
    3. # Created on 2018-08-13 14:05:23
    4. # Project: test

    5. from pyspider.libs.base_handler import *


    6. class Handler(BaseHandler):
    7.     crawl_config = {
    8.     }

    9.     @every(minutes=24 * 60)
    10.     def on_start(self):
    11.         self.crawl('http://reeoo.com/', callback=self.index_page)

    12.     @config(age=10 * 24 * 60 * 60)
    13.     def index_page(self, response):
    14.         for each in response.doc('a[href^="http"]').items():
    15.             self.crawl(each.attr.href, callback=self.detail_page)

    16.     @config(priority=2)
    17.     def detail_page(self, response):
    18.         return {
    19.             "url": response.url,
    20.             "title": response.doc('title').text(),
    21.         }
    复制代码



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 08:39 , Processed in 0.061664 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表