• 请不要在回答技术问题时复制粘贴 AI 生成的内容
8cbx
V2EX  ›  程序员

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

  •  
  •   8cbx ·
    8cbx · May 19, 2017 · 2910 views
    This topic created in 3287 days ago, the information mentioned may be changed or developed.

    问题:

    我尝试利用 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 等内容,但是基本每个页面都会遇到这个小于号的问题

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

    多谢帮助!


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

    Supplement 1  ·  May 19, 2017
    找到问题了…… lxml 版本太低……

    多谢大家的帮助!!!
    3 replies    2017-05-19 16:06:04 +08:00
    aploium
        1
    aploium  
       May 19, 2017
    chrome 能正常处理...(chrome 的开发者太屌了)
    一个保底的办法: chrome 外面挂一层 selenium, 让 chrome 去解析
    mansur
        2
    mansur  
       May 19, 2017
    import re
    twein
        3
    twein  
       May 19, 2017
    >>> 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'
    >>>
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1002 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 22:21 · PVG 06:21 · LAX 15:21 · JFK 18:21
    ♥ Do have faith in what you're doing.