swordspoet
V2EX  ›  问与答

请教一个正则表达式的问题

  •  
  •   swordspoet · Dec 17, 2017 · 1629 views
    This topic created in 3113 days ago, the information mentioned may be changed or developed.

    我在做一个爬虫,目标网页之一是: http://district.ce.cn/newarea/roll/201702/07/t20170207_20020701.shtml

    因为报告往往不止一页,所以,我需要从网页的源代码中找到页面总数,用 BeautifulSoup + lxml 解析后的部分网页代码如下:

    <!--
    function createPageHTML(_nPageCount, _nCurrIndex, _sPageName, _sPageExt){
      if(_nPageCount == null || _nPageCount<=1){
    		return;
    	}
    
    //中间代码省略
    
    }//函数结束符
    //WCM 置标
    createPageHTML(4, 0, "t20170207_20021665", "shtml");	
    //-->
    

    问题:如何用 Python 正则表达式匹配到 createPageHTML(4, 0, "t20170207_20021665", "shtml"); 字符串第一个括号后面的数字?那个数字是页面总数。

    本人正则表达式不够熟练,目前我用的办法是,但是觉得不够好:

    tmp_str = re.findall(r'[^createPageHTML(].*[$,]', str(tmp_html))
        page_sum = tmp_str[1][16]
    

    LI7ZT.jpg

    3 replies    2017-12-19 11:54:13 +08:00
    lniwn
        1
    lniwn  
       Dec 17, 2017 via iPhone   ❤️ 1
    如果是我,我会这样做:
    1 取出所有参数 params=re.search('createPageHTML\((.*?)\)', html_page).group(1)
    2 分割参数列表 params.split(',')

    手机码字不便,trip 等操作就没写了。
    aihimmel
        2
    aihimmel  
       Dec 17, 2017   ❤️ 1
    (?<=createPageHTML\()\d+
    Liyuu
        3
    Liyuu  
       Dec 19, 2017   ❤️ 1
    page = re.findall(r"createPageHTML\((.+?),",str(wb_text))[1]

    wb_text 是你整个网页的文本
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5749 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 06:25 · PVG 14:25 · LAX 23:25 · JFK 02:25
    ♥ Do have faith in what you're doing.