爬虫 正则
2021-06-10 本文已影响0人
seven1010
今天爬取好代夫网站,使用正则遇到一个棘手的问题, 在医院的科室页,想匹配肾内科的链接,使用url = re.search(r'facutly/(.*?)\.htm.*?肾', response.text, re.S)
总是匹配到第一个科室。
我错误的以为非贪婪匹配,那一定会匹配到靠近 肾 字url, 可是总是匹配到第一个科室
那是因为正则是从头开始搜索,当遇到第一个符合匹配规则时候就会与他匹配,后面的就不管了,r'facutly/(.*?)\.htm
与第一个科室匹配,所有在第一个科室和肾字中间的都被非贪婪匹配.*?
所匹配,而不是我想当然的倒序非贪婪匹配, 所以非贪婪前面 的子集很重要, 要想匹配到肾内科,前面子集必须不能匹配到前面的科室