V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
LeopardDennis
V2EX  ›  问与答

使用 PySpider 爬取没有特征的网站

  •  
  •   LeopardDennis · Nov 14, 2015 · 3049 views
    This topic created in 3830 days ago, the information mentioned may be changed or developed.

    http://www.cers.edu.cn/cersii/instru.do?method=showInstru&instruId=1000100000003

    使用 PySpider 爬取上述网址的仪器信息,因为元素没有特征, css 选择器选择不到,所以想用 PyQuery 尝试选择到对应元素,第一次接触 Python 和 PyQuery ,代码如下,请各位帮忙指点一二,感谢。

    from pyspider.libs.base_handler import *
    import re
    from pyquery import PyQuery as pq
    from lxml import etree
    import urllib

    class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://www.cers.edu.cn/cersii/instru.do?method=listInstru', callback=self.index_page)
    
    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('form a').items():
            if re.search("showInstru", each.attr.href, re.U):
                self.crawl(each.attr.href, callback=self.detail_page)
    
    @config(priority=2)
    def detail_page(self, response):
        return {
            "仪器名称": ,
        }
    
    7 replies    2016-03-08 23:24:51 +08:00
    xierch
        1
    xierch  
       Nov 14, 2015
    CSS selector 也有 :nth-child(),没有选不到的吧
    binux
        2
    binux  
       Nov 15, 2015
    写一个循环,选取所有的 td ,然后根据颜色判断是 key 还是 value ,拼装起来
    LeopardDennis
        3
    LeopardDennis  
    OP
       Nov 15, 2015
    @binux 我尝试了循环, pyquery 的 each 方法总报错,因为用到了 lembda ,声明的方法告诉我找不到,能否指点一下。
    binux
        4
    binux  
       Nov 15, 2015   ❤️ 1
    @LeopardDennis
    for each in doc('td') # 这样得到的是 lxml 对象
    或者 for each in doc('td').items() # 这样得到的依然是 pyquery 对象
    LeopardDennis
        5
    LeopardDennis  
    OP
       Nov 22, 2015
    @binux 您好,我在 demo.pyspider.org 上爬取了 8k+的数据,但是使用导出 csv 功能导出来的文件是空的,请问如何解决。项目地址: http://demo.pyspider.org/debug/eq_crawler
    binux
        6
    binux  
       Nov 23, 2015
    @LeopardDennis 导出的地址后面加上 ?offet=0&limit=100
    Izual
        7
    Izual  
       Mar 8, 2016
    css selector 应该很好写啊, a[href^="略
    另外还需要撸一个翻页的 callback 吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6169 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 02:38 · PVG 10:38 · LAX 19:38 · JFK 22:38
    ♥ Do have faith in what you're doing.