934926.jpg

韶华の

GF  2021-03-18 14:50
(仓鼠症重度患者;代下115磁力,50sp/G;更多看简介)

[全年龄正常向]python相关,正则表达式获取字符

下面的红色横线中的href可以用正则表达式来获取


par = re.findall(r'(?<=<h3> <a href=").*?(?=")', result)



现在想问下上面红色横线中的href如何获取?


此帖悬赏结束
最佳答案: 20 SP币
最佳答案获得者: 8bd36128

1322534.jpg

Sinon

引用
引用第4楼8bd36128于2021-03-18 16:01发表的  :

那你前面加个</span>呢,一个前面是<h3>,另一个前面是</span>
我不清楚你这个悬赏的区分,未完结就会有个<span></span>显示悬赏金额吧,那你直接
re.findall(r'</span>(?:.*)<a href="([^"]+)',s) ,类似这样操作呗

为了防止贪婪匹配,改成re.findall(r'</span>(?:[^<]*)<a href="([^"]+)',s)或者re.findall(r'</span>(?:\s*)<a href="([^"]+)',s)更好一点
最佳答案奖励: (+20) SP币

wgfgft685

热心助人奖励: (+1) SP币

1322534.jpg

Sinon

你为什么不直接匹配read.php呢……比如这样re.findall(r'<a href="read.php\?([^"]+)',s),匹配出来再加上"read.php?"就行了。
另外BeautifulSoup好像能直接查href吧。
热心助人奖励: (+1) SP币

none.gif

ae7b1ce6

楼上说的挺好啊,<a href前面加个关键字</span>就好了啊
热心助人奖励: (+1) SP币

934926.jpg

韶华の

B5F  2021-03-18 15:51
(仓鼠症重度患者;代下115磁力,50sp/G;更多看简介)
引用
引用第2楼8bd36128于2021-03-18 15:15发表的  :
你为什么不直接匹配read.php呢……比如这样re.findall(r'<a href="read.php\?([^"]+)',s),匹配出来再加上"read.php?"就行了。
另外BeautifulSoup好像能直接查href吧。


这两个不一样,对应后面的href地址,一个是悬赏完结,一个是悬赏未完结,所以要分开来提取

1322534.jpg

Sinon

引用
引用第3楼d6cde0d6于2021-03-18 15:51发表的  :


这两个不一样,对应后面的href地址,一个是悬赏完结,一个是悬赏未完结,所以要分开来提取

那你前面加个</span>呢,一个前面是<h3>,另一个前面是</span>
我不清楚你这个悬赏的区分,未完结就会有个<span></span>显示悬赏金额吧,那你直接
re.findall(r'</span>(?:.*)<a href="([^"]+)',s) ,类似这样操作呗

1115338.png

CC先生

B7F  2021-03-18 16:55
(除了死亡,都是擦伤)
这个不能用beautifulsoup来获取href么?

正则实在是学不废