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

2017-12-17 11:33:53 +08:00
 swordspoet

我在做一个爬虫,目标网页之一是: 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]

1201 次点击
所在节点    问与答
3 条回复
lniwn
2017-12-17 12:03:08 +08:00
如果是我,我会这样做:
1 取出所有参数 params=re.search('createPageHTML\((.*?)\)', html_page).group(1)
2 分割参数列表 params.split(',')

手机码字不便,trip 等操作就没写了。
aihimmel
2017-12-17 12:03:09 +08:00
(?<=createPageHTML\()\d+
Liyuu
2017-12-19 11:54:13 +08:00
page = re.findall(r"createPageHTML\((.+?),",str(wb_text))[1]

wb_text 是你整个网页的文本

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX