V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
copriwolf
V2EX  ›  程序员

请问如何批量点击微博某话题中的每条微博的唯一链接?

  •  
  •   copriwolf · 2015-02-15 20:25:40 +08:00 · 3868 次点击
    这是一个创建于 3579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,
    比如在微博中搜索"话题A",里面每条微博都是这个样式

    #话题A,这是链接http://t.cn/link

    那么请问如何做到可以在这个话题的搜索页里,一次点击完成本所有页内的所有微博的链接点击?

    或者,也可以换个思路,如何做到在本页中一次点击所有 t.cn 为域名的链接?

    第 1 条附言  ·  2015-02-16 00:25:47 +08:00
    发起这个主题是因为今天联通发信息过来说可以用红包抽流量,
    ![联通一起沃 免费流量红包领取](http://or2.in/2015/02/15/17Wo-FlowRedPacket/)
    经过探究发现联通似乎并没有做限制,所以想探究机械化可不可行。

    经过@aaaa007cn @lk09364 的分享,发现可以这么做:
    [].forEach.call(document.querySelectorAll('a[href^="http://t.cn/"]'), function(v){
    console.log(v)
    })
    17 条回复    2015-02-16 09:24:01 +08:00
    arachide
        1
    arachide  
       2015-02-15 20:53:48 +08:00
    这需要解析html
    NeoAtlantis
        2
    NeoAtlantis  
       2015-02-15 20:59:12 +08:00
    jquery试试?
    copriwolf
        3
    copriwolf  
    OP
       2015-02-15 21:11:50 +08:00
    @arachide 能详细的解释一下吗?
    copriwolf
        4
    copriwolf  
    OP
       2015-02-15 21:12:27 +08:00
    @NeoAtlantis 没有用过,请问能详细讲解一下吗
    arachide
        5
    arachide  
       2015-02-15 21:36:01 +08:00   ❤️ 1
    @copriwolf 晕这是技术问题了

    有用regex正则的
    有自己写解析引擎的
    aaaa007cn
        6
    aaaa007cn  
       2015-02-15 21:51:54 +08:00   ❤️ 1
    https://developer.mozilla.org/docs/Web/API/Document.querySelectorAll

    [].forEach.call(document.querySelectorAll('a[href^="http://t.cn/"]'), a => 点击(a))
    copriwolf
        7
    copriwolf  
    OP
       2015-02-15 22:01:01 +08:00
    @aaaa007cn 本人知识浅薄,看完了里面的api页面,请问这个是怎么使用呢,他这是放在页面中吗?可是在微博中页面无法修改,难道使用审查元素?
    aaaa007cn
        8
    aaaa007cn  
       2015-02-15 22:32:28 +08:00
    你没说是在什么环境下,要如何操作
    所以我假定你是要在浏览器中执行
    要在浏览器中执行自己的 javascript 脚本
    无非通过自制浏览器扩展、用户脚本、代理注入
    如果偶尔要用
    那么直接使用开发者工具(就是审查元素会打开的那个)中的控制台也行
    上面只是演示了如何通过 css selector 选取元素并遍历
    具体怎么点击还要看你想怎么做
    比如 http://wiki.greasespot.net/GM_openInTab
    irgil
        9
    irgil  
       2015-02-15 22:44:57 +08:00   ❤️ 1
    用正则提取出来,去重,再用curl访问
    copriwolf
        10
    copriwolf  
    OP
       2015-02-15 22:51:39 +08:00
    @aaaa007cn 我是rmbp os x yosemite,chrome。我是想直接在浏览器中执行javascript,一执行,则自动在新标签页打开本页中所有包含t.cn域名的网址。 http://wiki.greasespot.net/GM_openInTab,这个油猴的脚本功能是打开新标签页并切换过去吧?
    请问你刚刚演示的程序是如何在console中执行,我执行后无效。
    lk09364
        11
    lk09364  
       2015-02-15 23:13:57 +08:00   ❤️ 1
    @copriwolf 油猴api 不能在console 里用吧…,另外#6 给出的代码是伪代码。实际使用时:
    [].forEach.call(document.querySelectorAll('a[href^="http://t.cn/"]'), function(v){
    console.log(v)
    })
    copriwolf
        12
    copriwolf  
    OP
       2015-02-16 00:12:33 +08:00
    @lk09364 非常感谢!!
    oott123
        13
    oott123  
       2015-02-16 00:14:54 +08:00
    抢红包?
    DearTanker
        14
    DearTanker  
       2015-02-16 00:17:21 +08:00
    @oott123 哈哈。希望作者做出来可以分享一下。。。
    copriwolf
        15
    copriwolf  
    OP
       2015-02-16 00:18:30 +08:00
    @oott123 哈哈是的,只是探究发现他们似乎并没有做限制,所以想探究机械化可不可行
    typcn
        16
    typcn  
       2015-02-16 07:41:20 +08:00   ❤️ 1
    用 pyspider 写了个自动的

    def on_start(self):
    self.crawl('http://www.weibo.com/p/1008081c4e75201132722bf842ceec29e11549/home', headers ={'User-Agent': 'TYPCNSpider'} , callback=self.index_page)

    def index_page(self, response):
    for each in response.doc('a[title^="http://t.17wo.cn"]').items():
    self.crawl(each.attr.title, headers = {'User-Agent': '你的UA '}, cookies = {你的COOKIE})
    pljhonglu
        17
    pljhonglu  
       2015-02-16 09:24:01 +08:00
    抢红包专用~哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1201 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:17 · PVG 07:17 · LAX 15:17 · JFK 18:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.