zoukankan      html  css  js  c++  java
  • Pyspider抓取静态页面

    近期,我想爬一批新闻资讯的内容。新闻类型的网址很多,我想看看有没有一个网页上能包罗尽可能多的新闻网站呢,于是就发现了下面这个网页

    http://news.hao123.com/wangzhi

     这个页面的下边还有地方新闻的分类

    1、爬取目标

    按类型分的网址列表

    按地方分的网址列表

    2、按类型

     1 #!/usr/bin/env python
     2 # -*- encoding: utf-8 -*-
     3 # Created on 2018-01-02 15:44:54
     4 # Project: financeNews
     5 
     6 from pyspider.libs.base_handler import *
     7 
     8 
     9 class Handler(BaseHandler):
    10     crawl_config = {
    11     }
    12 
    13     def __init__(self):
    14         self.url = 'http://news.hao123.com/wangzhi'
    15     
    16     @every(minutes=24 * 60)
    17     def on_start(self):
    18         self.crawl(self.url,callback=self.index_page)
    19 
    20     @config(age=10 * 24 * 60 * 60)
    21     def index_page(self, response):
    22             
    23         return [{
    24             "group" : x('.content-title').text(),
    25             "websites" : [a.text() for a in x('li a').items()]
    26         } for x in response.doc('.mod-content').items()]

    运行结果

    3、按地方

     1 #!/usr/bin/env python
     2 # -*- encoding: utf-8 -*-
     3 # Created on 2018-01-02 15:44:54
     4 # Project: financeNews
     5 
     6 from pyspider.libs.base_handler import *
     7 
     8 
     9 class Handler(BaseHandler):
    10     crawl_config = {
    11     }
    12 
    13     def __init__(self):
    14         self.url = 'http://news.hao123.com/wangzhi'
    15     
    16     @every(minutes=24 * 60)
    17     def on_start(self):
    18         self.crawl(self.url,callback=self.index_page)
    19 
    20     @config(age=10 * 24 * 60 * 60)
    21     def index_page(self, response):
    22             
    23         return [{
    24             "city" : x.attr('id')[5:],
    25             "websites" : [a.text() for a in x('li a').items()]
    26         } for x in response.doc('.page').items()]

    运行结果

    4、知识点小结

    4.1 __init__()方法为对象创建完成后的初始化方法,自动执行,可以自定义一些全局属性
    4.2 "city" : x.attr('id')[5:]

    取属性id的值,并从第6个字符截取

    4.3 可以在return中多级遍历,数组套数组
    4.4 pyspider提供了元素选择帮助功能,可以快捷选取元素,但不是非常精确
  • 相关阅读:
    学习之路
    c
    为什么正确,还是有点bug?
    1212
    学习呀
    记录一下学习c语言的过程3.26日1
    字符串处理
    二维数组的转置
    一维数组转置
    Mybatis读取数据实战
  • 原文地址:https://www.cnblogs.com/wangzhisdu/p/8182489.html
Copyright © 2011-2022 走看看