
如下 ,返回一个 html 页面(类型不是 html 是 str,不能 bs4 解析),想提取里边的 url=https://www.baidu.com/s/1dD8Hkn3 那一串链接,不知道怎么写正则,各种尝试,均不行,取不出来 ,求 v 友帮忙写一个,万谢
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>正在跳转...</title> <meta name="referrer" cOntent="no-referrer" /> <meta HTTP-EQUIV="refresh" cOntent="0; url=https://www.baidu.com/s/1dD8Hkn3"> </head> <body> </body> </html> 1 adminii 2018 年 9 月 1 日 <meta.+url=(.+)\">$ 直白写入这个不知道是不是符合要求。 提取$1 就是地址了 |
2 delectate 2018 年 9 月 1 日 Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import re >>> a='''<!DOCTYPE html> ... <html> ... <head> ... <meta charset="utf-8"> ... <title>正在跳转...</title> ... <meta name="referrer" cOntent="no-referrer" /> ... <meta HTTP-EQUIV="refresh" cOntent="0; url=https://www.baidu.com/s/1dD8Hkn3"> ... </head> ... <body> ... </body> ... </html> ... ''' >>> re.findall(r'url=(.+)"',a) ['https://www.baidu.com/s/1dD8Hkn3'] >>> |
4 NickCarter 2018 年 9 月 1 日 via iPhone |
5 locoz 2018 年 9 月 1 日 via Android “类型不是 html 是 str ”?这话有点问题 |
6 zaaazaa 2018 年 9 月 1 日 用 beautifulsoup 先取出片段再用正则会不会简单很多 |
7 zaaazaa 2018 年 9 月 1 日 好吧居然不能用 bs4 |
8 pppguest3962 2018 年 9 月 1 日 字符串里面如果还有标签区段,str 可以继续弄进 bs4,再做递进一步的处理的。。。 ``` htmlStr = """<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>正在跳转...</title> <meta name="referrer" cOntent="no-referrer" /> <meta HTTP-EQUIV="refresh" cOntent="0; url=https://www.baidu.com/s/1dD8Hkn3"> </head> <body> </body> </html> """ htmlStrBs4 = BeautifulSoup(htmlStr.__str__(), 'lxml') ``` |
9 zhzer 2018 年 9 月 1 日 pattern = r"<meta.+? cOntent=(['"]).+?url=(.+) ?.*\1>" 组 2 就是链接 |
10 PulpFunction 2018 年 9 月 1 日 想知道楼主怎么各种尝试的,上切片美滋滋啊 |
11 des 2018 年 9 月 1 日 via Android 最近什么回事,看见好几个求正则的了。 都是做爬虫,你们就不能老老实实用 beautifulsoup 吗?? |
12 zst 2018 年 9 月 1 日 via Android 你把 str 丢到 bs4 里不是一样吗...... |
13 duan602728596 2018 年 9 月 1 日 via iPhone python 不是有 pyquery 么 |
14 mmnsghgn 2018 年 9 月 1 日 from lxml import etree html_string = ''' <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>正在跳转...</title> <meta name="referrer" cOntent="no-referrer" /> <meta HTTP-EQUIV="refresh" cOntent="0; url=https://www.baidu.com/s/1dD8Hkn3"> </head> <body> </body> </html> ''' html = etree.HTML(html_string) url = html.xpath('//meta[3]/@content')[0].split('url=')[-1] print(url) 觉得 lxml 比 bs4 舒服的多 |
15 lu5je0 2018 年 9 月 1 日 url=(.*)\" |
18 ShareDuck 2018 年 9 月 2 日 via Android 每次写正则都要看“ 30 分钟入门”的路过,膜拜各路大神。 |
19 css3 OP @PulpFunction 切片长度一致才行吧,url 这每个长度都不一样啊 |
21 PulpFunction 2018 年 9 月 2 日 |
22 css3 OP @PulpFunction 可以举例说明吗? |
23 richieboy 2018 年 9 月 3 日 "(?<=cOntent=\"0; url=)[^\"]*(?=\">)" |
24 PulpFunction div class="badges"> 2018 年 9 月 3 日 @css3 你自己数吧胸跌 |
25 wersonliu9527 2018 年 9 月 3 日 其实用 xpath 我觉得是最简单的,配合谷歌浏览器的插件 xpath helper |
26 xpresslink 2018 年 9 月 3 日 楼主基本概念都不清楚么? 只取一个 URL 确实只要用正则就可以了,用 bs4, lxml 之类方案有些重了。 但是返回一个 html 页面(类型不是 html 是 str,不能 bs4 解析)这是什么屁话。 |
27 css3 OP @xpresslink 不要方,我调用一个接口,人家返回的就是一个 html 页面,类型是 str,有什么好惊讶的呢 |
28 icris 2018 年 9 月 3 日 我来复制一个示例吧 soup = BeautifulSoup('<b class="boldest">Extremely bold</b>') tag = soup.b type(tag) # <class 'bs4.element.Tag'> 第一行单引号里面是不是字符串?能不能用 bs4 解析? |
29 xpresslink 2018 年 9 月 3 日 @css3 我只能呵呵了 |
30 thautwarm 2018 年 9 月 3 日 话说我笔记记得有: re_exp = re.compile(r'( https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9]\.[^\s]{2,})') |