如何提取URL?

时间:2017-03-06 01:31:41

标签: python beautifulsoup python-requests

我是刮刮和解析的新手。我想提取URL。但我得到了

无 无

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>

1 个答案:

答案 0 :(得分:3)

您可以定位meta内包含url子字符串的content元素。然后,您可以按;分割,然后分割为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 expression应用于content元素的meta属性,然后重复使用相同的表达式来提取网址:

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'