`
huangyongxing310
  • 浏览: 490464 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

pyspider示例

 
阅读更多
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-09-10 20:19:29
# Project: reo

from pyspider.libs.base_handler import *


class Handler(BaseHandler):
    crawl_config = {
    }

    # on_start(self) 程序的入口,当点击左侧绿色区域右上角的 run 按钮时首先会调用这个函数
    @every(minutes=24 * 60)
    def on_start(self):
        # 用于创建一个爬取任务,url 为目标地址,callback 为抓取到数据后的回调函数
        self.crawl('www.reeoo.com', callback=self.index_page, validate_cert=False)

    # 参数为 Response 对象
    # response.doc 为 pyquery 对象,pyquery和jQuery类似,,主要用来方便地抓取返回的html文档中对应标签的数据
    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        # for each in response.doc('a[href^="http"]').items():
        #     self.crawl(each.attr.href, callback=self.detail_page, validate_cert=False)
        for each in response.doc('div[class="thumb"]').items():
            detail_url = each('a').attr.href
            print(detail_url)
            self.crawl(detail_url, callback=self.detail_page, validate_cert=False)

    @config(priority=2)
    # 返回一个 dict 对象作为结果,结果会自动保存到默认的 resultdb 中,也可以通过重载方法把结果数据存储到指定的数据库,
    def detail_page(self, response):
        header = response.doc('body > article > section > header')

        title = header('h1').text()

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

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

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

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

        return {
            "title": title,
            "tags": tags,
            "description": description,
            "image_url_list": image_url_list,
            "website_url": website_url,
        }



#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-09-10 20:19:29
# Project: reo

from pyspider.libs.base_handler import *
import urllib


class Handler(BaseHandler):
    crawl_config = {
    }

    # on_start(self) 程序的入口,当点击左侧绿色区域右上角的 run 按钮时首先会调用这个函数
    @every(minutes=24 * 60)
    def on_start(self):
        # 用于创建一个爬取任务,url 为目标地址,callback 为抓取到数据后的回调函数
        self.crawl('http://www.mzitu.com/150114', callback=self.index_page, validate_cert=False)

    # 参数为 Response 对象
    # response.doc 为 pyquery 对象,pyquery和jQuery类似,,主要用来方便地抓取返回的html文档中对应标签的数据
    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        # for each in response.doc('a[href^="http"]').items():
        #     self.crawl(each.attr.href, callback=self.detail_page, validate_cert=False)
        for each in response.doc('.main-image img').items():
            detail_url = each('img').attr.src
            print(detail_url)
            # 网络上图片的地址
            #img_src =detail_url

            # 将远程数据下载到本地,第二个参数就是要保存到本地的文件名
            #urllib.request.urlretrieve(img_src,'D:\\1.jpg')
        for each in response.doc('.pagenavi > a:last-child').items():
            # 根据拿到的下一页url继续调用detail_page函数,获取下一页的图片和下一页中的下一页
            self.crawl(each.attr.href, callback=self.index_page, validate_cert=False)
            #self.crawl(detail_url, callback=self.detail_page, validate_cert=False)

    @config(priority=2)
    # 返回一个 dict 对象作为结果,结果会自动保存到默认的 resultdb 中,也可以通过重载方法把结果数据存储到指定的数据库,
    def detail_page(self, response):
        return {
            "title": "title",
        }
        # #header = response.doc('body > article > section > header')
        # #
        # # title = header('h1').text()
        # #
        # # tags = []
        # # for each in header.items('a'):
        # #     tags.append(each.text())
        # #
        # # content = response.doc('div[id="post_content"]')
        # # description = content('blockquote > p').text()
        # #
        # # website_url = content('a').attr.href
        # #
        # # image_url_list = []
        # # for each in content.items('img[data-src]'):
        # #     image_url_list.append(each.attr('data-src'))
        # #
        # return {
        #     "title": title,
        #     "tags": tags,
        #     "description": description,
        #     "image_url_list": image_url_list,
        #     "website_url": website_url,
        # }




# !/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-09-13 21:28:59
# Project: test003

from pyspider.libs.base_handler import *
import urllib.request
import time


class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl(
            'https://www.163.com/',
            fetch_type='js', callback=self.index_page, validate_cert=False,js_viewport_height=12000)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        count = 0;

        for each in response.doc('img').items():
            detail_url = each('img').attr.src
            print(detail_url)

            work_path = 'E:\\phantomjsTest\\temp\\' + str(count) + '.jpg'
            count = count + 1
            if detail_url:
                urllib.request.urlretrieve(detail_url, work_path)
            else:
                print('is none')

            # urllib.request.urlretrieve(detail_url, work_path)

    @config(priority=2)
    def detail_page(self, response):
        return {
            "url": response.url,
            "title": response.doc('title').text(),
        }






分享到:
评论

相关推荐

    pyspider中文手册

    - 命令行启动示例: ```bash pyspider start ``` - **常用操作**: - 创建新的爬虫项目。 - 编辑爬虫脚本。 - 在Web UI中查看爬取结果。 #### 三、PySpider的高级用法 ##### 3.1 self.crawl - **定义**: `...

    python3.7+安装pyspider报错解决方案.docx

    示例代码更改如下: ```python # 原始代码 async def my_function(): result = await some_async_operation() # 修改后的代码 def my_function(): result = shark.some_async_operation() ``` **注意事项**: ...

    Python爬虫项目集合-pyspider-project.zip

    8. `examples`: 示例代码,帮助初学者快速上手。 三、pyspider核心概念 1. **Task**: 任务是爬虫的基本单位,定义了要抓取的URL和处理逻辑。 2. **Fetcher**: 负责发送HTTP请求,获取网页内容,支持GET、POST等方法...

    【python爬虫】资源pyspider-v0.3.10

    - 示例代码:https://github.com/binux/pyspider/tree/master/examples - 论坛与社区:https://github.com/binux/pyspider/issues 通过深入学习和实践pyspider-v0.3.10,开发者可以快速掌握Python爬虫技术,构建...

    知乎爬虫和v2ex爬虫的实现。使用python的pyspider爬虫进行开发、

    5. **代码示例**: 以下是一个简单的pyspider爬虫脚本片段,用于获取知乎首页的热门问题: ```python def on_start(self): self.crawl('https://www.zhihu.com/', callback=self.index_page) def index_page...

    pyspider-script:pyspider 的可爱 python 脚本

    **三、Pyspider实战示例** 1. **创建新项目**:在Web UI中新建项目,编写`__init__.py`脚本,如: ```python def on_start(): self.crawl('http://example.com', callback=self.parse) def parse(self, ...

    Pyspider中给爬虫伪造随机请求头的实例

    最后,文档中还提到了一些在请求头中常见的字段,如Host和Cookie,但是在提供的示例代码中并没有包含这些字段。在实际应用中,可以根据需要添加或修改这些字段,以更好地模拟浏览器的请求行为。例如,可以随机生成...

    PySpider-开源

    丰富的文档和示例代码也帮助新用户快速上手。 总的来说,PySpider是一款优秀的Python爬虫工具,它的强大功能和易用性使其在开源软件领域占有一席之地。无论是个人学习还是企业级应用,PySpider都能成为开发者得力的...

    Python爬虫-使用Python开发的爬虫示例demo.zip

    此外,对于复杂和大规模的爬虫项目,我们可能需要使用到分布式爬虫,例如使用Scrapy-Cluster或PySpider,它们能将任务分散到多台机器上,提高爬取速度和应对高并发的能力。 总的来说,“Python爬虫-使用Python开发...

    PySipder是一个Python爬虫程序.rar

    from pyspider.libs.base_handler import * class Handler(BaseHandler): crawl_config = { } @every(minutes=24 * 60) def on_start(self): self.crawl('http://scrapy.org/', callback=self.index_page) ...

    pip install 使用国内镜像的方法示例

    这条命令将会从清华大学提供的镜像中下载并安装`pyspider`这个库。 #### 永久更改默认镜像源 如果希望所有通过`pip`安装的软件包都能自动使用国内镜像源,可以通过编辑`pip`的配置文件来实现永久修改。 - **Linux...

    python爬虫的一些常用第三方库下载

    - **简介**:pyspider 是一个功能齐全的分布式爬虫系统。它支持JavaScript渲染页面,适合爬取复杂的网站。 - **安装命令**:`pip install pyspider` #### 14. cola - **简介**:cola 在给定的信息中并未明确指出是...

    python爬虫+图形化+自动化+快速部署

    在“spider-flow”这个文件名中,我们可以推测这可能是一个关于爬虫流程的实现或者设计,可能包含了如何构建和管理爬虫流程的示例或教程。它可能涵盖了如何定义任务、设置爬取规则、处理数据、以及如何通过图形化...

    12-3 pip 升级和镜像源1

    **注意**:上述示例中的命令并不恰当,因为它试图安装 `pyspider` 这个包,而实际上只需要更换镜像源即可。正确的做法是直接更换镜像源,而不是结合某个特定的安装命令。 ##### 2.2 永久更改 pip 配置文件 为了...

    python学习计划

    数据结构和算法是 Python 开发的基础,下面通过具体的代码示例回顾了几个经典算法: - **排序算法**:冒泡排序和归并排序 - 冒泡排序是一种简单的排序方法,通过重复地遍历待排序的数列,一次比较两个元素,如果...

Global site tag (gtag.js) - Google Analytics