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

求助!网页爬虫遇到了非转义的小于号怎么解决

  •  
  •   8cbx ·
    8cbx · 2017-05-19 15:46:41 +08:00 · 2252 次点击
    这是一个创建于 2769 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题:

    我尝试利用 pyspider 框架爬一个网站,在脚本用 pyquery 处理一个页面,但是这个页面中有 n 多个小于号,还是非转义过的小于号……在用 pyquery 处理的时候就会造成整个标签的混乱闭合。举个例子:

    <p>0<=a,b<=10</p><p class="pst">Output</p>
    

    我想提取 0<=a,b<=10 这一部分,后面的 Output 我不想要,但是用 pyquery 一处理后就出问题了……提取内容的时候总是少内容或者多内容

    页面的源地址是: http://poj.org/problem?id=1000

    我主要想提取页面中的主要内容,如 description、input、output 等内容,但是基本每个页面都会遇到这个小于号的问题

    想请教各路大神这种情况应该如何处理啊?

    多谢帮助!


    我想过用正则先把小于号替换掉,但是貌似情况可能有点多,仅仅在我看过的很有限的页面中就出现过<<这种情况。现在已知会出现'< ', '<=', '<<', '<'这四种情况

    第 1 条附言  ·  2017-05-19 16:23:20 +08:00
    找到问题了…… lxml 版本太低……

    多谢大家的帮助!!!
    3 条回复    2017-05-19 16:06:04 +08:00
    aploium
        1
    aploium  
       2017-05-19 16:01:14 +08:00
    chrome 能正常处理...(chrome 的开发者太屌了)
    一个保底的办法: chrome 外面挂一层 selenium, 让 chrome 去解析
    mansur
        2
    mansur  
       2017-05-19 16:04:34 +08:00
    import re
    twein
        3
    twein  
       2017-05-19 16:06:04 +08:00
    >>> from pyquery import PyQuery as pq
    >>> a = '''<p>0<=a,b<=10</p><p class="pst">Output</p>'''
    >>> doc = pq(a)
    >>> doc('p').eq(0).text()
    '0<=a,b<=10'
    >>>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5329 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:56 · PVG 14:56 · LAX 22:56 · JFK 01:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.