我是刮刮和解析的新手。我想提取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>
答案 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'