我正在使用Python
和BeautifulSoup
库抓取一个页面。
我必须从此字符串中获取URL。这实际上位于href
标记的a
属性中。我已经抓了它但似乎找不到从这个
javascript:void%20window.open('/Sheraton-Tucson-Hotel-177/tnc/150/24795/en','TC_POPUP','width=490,height=405,screenX=300,screenY=250,top=250,left=300,scrollbars=yes,resizable=no');
答案 0 :(得分:2)
您可以编写一个简单的正则表达式来提取URL。
>>> import re
>>> href = "javascript:void%20window.open('/Sheraton-Tucson-Hotel-177/tnc/150/24795/en','TC_POPUP','width=490,height=405,screenX=300,screenY=250,top=250,left=300,scrollbars=yes,resizable=no');"
>>> re.findall(r"'(.*?)'", href)
['/Sheraton-Tucson-Hotel-177/tnc/150/24795/en', 'TC_POPUP', 'width=490,height=405,screenX=300,screenY=250,top=250,left=300,scrollbars=yes,resizable=no']
>>> _[0]
'/Sheraton-Tucson-Hotel-177/tnc/150/24795/en'
这里的正则表达式是
'(.*?)'
哪个读取"找到单引号,然后是任何(并捕获任何内容),然后是另一个单引号,并且由于?
运算符"而非贪婪地执行此操作。这提取了window.open
的论点;然后,只需选择第一个获取URL。
您的href中不应该嵌套'
,因为这些应该转义为%27
。但是,如果这样做,这将无效,您可能需要一个不使用正则表达式的解决方案。
答案 1 :(得分:1)
我这样做了。
terms = javascript:void%20window.open('/Sheraton-Tucson-Hotel-177/tnc/150/24795/en','TC_POPUP','width=490,height=405,screenX=300,screenY=250,top=250,left=300,scrollbars=yes,resizable=no');
terms.split("('")[1].split("','")[0]
输出
/Sheraton-Tucson-Hotel-177/tnc/150/24795/en
答案 2 :(得分:0)
而不是正则表达式,你可以只对它进行两次分区,(例如:'
):
s.partition("'")[2].partition("'")[0]
# /Sheraton-Tucson-Hotel-177/tnc/150/24795/en
答案 3 :(得分:-1)
这是一个快速而丑陋的答案
href.split("'")[1]