V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xe2vherd
V2EX  ›  程序员

爬虫提取这种 html 有什么好的方法啊

  •  
  •   xe2vherd · 2019 年 2 月 6 日 · 3411 次点击
    这是一个创建于 2551 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在写微博的爬虫,本来是想用 scrapy 的 xpath 提取内容,在 chrome 的 console 中试了下还正常,然而在代码中 xpath 却什么也提取不出来。

    最终忽然发现 chrome 中的 elements 里面的内容和网页源码是不一样的。看了源码之后网页上的 html 竟然全都是 js 动态生成的,好二哦。

    就像下面这样。

    Element: weibo_element

    Source: weibo_source

    <script>FM.view({"ns":"pl.header.head.index","domid":"Pl_Official_Headerv6__1","css":[],"js":"page/js/pl/header/head/index.js?version=03f906edc4cbe84e","html":"<div class=\"PCD_header\">\r\n                <div class=\"pf_wrap\" layout-shell=\"false\" node-type=\"cover_wrap\">\r\n                <div class=\"cover_wrap\" node-type=\"cover\"  style=\"background-
    

    那么提取这种 html 有什么好的方法啊。 可怜我这种大过年还要写代码的大四狗。

    14 条回复    2019-02-09 19:55:01 +08:00
    leoleoasd
        1
    leoleoasd  
       2019 年 2 月 6 日   ❤️ 1
    webdrive 里能运行 js 但是有些网站(比如淘宝)会检测 webdriver
    nlysh007
        2
    nlysh007  
       2019 年 2 月 6 日
    直接 get ,然后匹配出 html 的部分就是了,有啥好说的...
    hanzichi
        3
    hanzichi  
       2019 年 2 月 6 日
    无头浏览器?
    luozic
        4
    luozic  
       2019 年 2 月 6 日 via iPhone
    最后情况直接上 selenium 把页面整个下载了
    Sparetire
        5
    Sparetire  
       2019 年 2 月 7 日
    puppeteer
    NewConn
        6
    NewConn  
       2019 年 2 月 7 日 via Android
    插眼,我也想知道除了 web driver 和 selenium 之外的办法,总感觉这种假浏览器或者调用浏览器的方式太蠢了,不知道还有什么办法
    kltt22
        7
    kltt22  
       2019 年 2 月 7 日 via Android
    执行 js
    leoleoasd
        8
    leoleoasd  
       2019 年 2 月 7 日
    写个浏览器插件 socket 链接 python 接受控制
    LukeChien
        9
    LukeChien  
       2019 年 2 月 8 日 via Android
    关键词: chrome headless
    lynskylate
        10
    lynskylate  
       2019 年 2 月 8 日
    动态生成除了用 headless chrome 没什么太好的方法,说实话挺蠢的,每次读取完毕未必读取完毕,还得 wait 几秒。

    如果有耐心的话,老实看下加密过的 js,https://beautifier.io/用这个美化下看,然后调 python 或者 java 的 u8 wrap 来执行这一段 js, 不能有网络和 dom 相关调用。
    xe2vherd
        11
    xe2vherd  
    OP
       2019 年 2 月 8 日 via Android
    @leoleoasd 我只是想简单的提取一些 html...
    ericgui
        12
    ericgui  
       2019 年 2 月 8 日
    我觉得你研究一下 fiddler,抓一下 api
    XxxxD
        13
    XxxxD  
       2019 年 2 月 8 日
    模拟登陆 or 找 api
    tikazyq
        14
    tikazyq  
       2019 年 2 月 9 日 via iPhone
    用 selenium 或 puppeteer
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:37 · PVG 22:37 · LAX 06:37 · JFK 09:37
    ♥ Do have faith in what you're doing.