哪位大神能帮忙写一个正则表达式啊?

2018 年 9 月 1 日
 css3

如下 ,返回一个 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>

4610 次点击
所在节点    Python
30 条回复
adminii
2018 年 9 月 1 日
<meta.+url=(.+)\">$
直白写入这个不知道是不是符合要求。
提取$1 就是地址了
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']
>>>
css3
2018 年 9 月 1 日
@adminii
@delectate 非常感谢二位,多谢!
NickCarter
2018 年 9 月 1 日
locoz
2018 年 9 月 1 日
“类型不是 html 是 str ”?这话有点问题
zaaazaa
2018 年 9 月 1 日
用 beautifulsoup 先取出片段再用正则会不会简单很多
zaaazaa
2018 年 9 月 1 日
好吧居然不能用 bs4
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')
```
zhzer
2018 年 9 月 1 日
pattern = r"<meta.+? content=(['"]).+?url=(.+) ?.*\1>"
组 2 就是链接
PulpFunction
2018 年 9 月 1 日
想知道楼主怎么各种尝试的,上切片美滋滋啊
des
2018 年 9 月 1 日
最近什么回事,看见好几个求正则的了。
都是做爬虫,你们就不能老老实实用 beautifulsoup 吗??
angles6645
2018 年 9 月 1 日
你把 str 丢到 bs4 里不是一样吗......
duan602728596
2018 年 9 月 1 日
python 不是有 pyquery 么
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 舒服的多
lu5je0
2018 年 9 月 1 日
url=(.*)\"
xml123
2018 年 9 月 1 日
@des 可能是因为正则比较简单(门槛低)吧,我第一次写爬虫也是全程正则硬刚……
des
2018 年 9 月 2 日
@xml123 门槛低倒是,简单就不一定了
ShareDuck
2018 年 9 月 2 日
每次写正则都要看“ 30 分钟入门”的路过,膜拜各路大神。
css3
2018 年 9 月 2 日
@PulpFunction 切片长度一致才行吧,url 这每个长度都不一样啊
css3
2018 年 9 月 2 日
@ShareDuck 我也看,但写不出来能用的正则,

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

https://v2ex.ih06.com/t/485192

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

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

© 2021 V2EX