2017-03-06 82 views
1

我是新来的抓取和解析。我想提取网址。但我正在逐渐如何提取网址?

无 无

import requests 
from bs4 import BeautifulSoup 

url = "xabh.com" 
r = requests.get('http://xabh.com') 
c = r.content 

soup = BeautifulSoup(c,'lxml') 

soup.find_all('meta') 

for link in soup.find_all('meta'): 
    print(link.get('url')) 

这是

<html><head><title>XABH</title> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> 
<meta content="0; url=http://www.xabh.com/scripts/detailsnew.asp?id=mar0617" http-equiv="refresh"/> 
</head><body> 
</body></html> 

回答

3

您可以定位包含内部contenturl子的meta元素。然后,您可以通过;分裂,然后由url=

In [8]: content = soup.select_one("meta[content*=url]")["content"] 

In [9]: content.split(";")[-1].split("url=")[-1] 
Out[9]: 'http://www.xabh.com/scripts/detailsnew.asp?id=mar0617' 

或者,你可以申请一个regular expressionmeta元素的content属性,然后重复使用相同的表达式提取的网址:

In [10]: import re 

In [11]: pattern = re.compile(r"url=(.*?)$") 

In [12]: content = soup.find("meta", content=pattern)["content"] 

In [13]: pattern.search(content).group(1) 
Out[13]: 'http://www.xabh.com/scripts/detailsnew.asp?id=mar0617' 
+0

非常感谢... – maximusdooku