【发布时间】:2022-11-22 21:33:38
【问题描述】:
我正在尝试使用 beautiful soup 在网站列表中查找特定链接。 我试图找到
- 包含关键字的 href url
- 包含关键字的锚点
- 如果页面不包含关键字打印“未找到”。
这个想法是让函数返回 URL 或“未找到”
我用 beautifulsoup 构建了代码并构建了 if-else 语句 所以该函数返回变量 a 是链接或“未找到” 它可以一路打印不同的结果,但函数返回是空的。
from bs4 import BeautifulSoup from urllib.request import Request, urlopen from urllib.parse import urlparse, urljoin import re import ssl #function to parse a website from a url and find the links that contain the content about transparency. def transp_url(url): #hearders because some pages return 403 error hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Accept-Encoding': 'none', 'Accept-Language': 'en-US,en;q=0.8', 'Connection': 'keep-alive'} #SSL certificate error with some pages, thus adding this: ssl._create_default_https_context = ssl._create_unverified_context req = Request(url, headers=hdr) html_page = urlopen(req) global a #find one href link URL that contains "transpar" #problem with casing doesn't recognise uper or lower. soup = BeautifulSoup(html_page, "lxml") link = soup.select_one("a[href*=transpar]") if link: #print("link found") a = link['href'] #print(a) else: #get the link of the transparence page based on anchor. #problem with casing doesn't recognise uper or lower. link2 = soup.find("a", string=re.compile("Transpar")) if link2: #print("link found") a = link2['href'] #print(a) else: link3 = soup.find("a", string=re.compile("transpar")) if link3: #print("link found") a = link3['href'] #print(a) else: #print("No Transparency page") a = "No Transparency page" #print(a) return a
【问题讨论】:
-
我看到您发布了一个函数,该函数末尾带有
return a。你能展示一下你是如何调用这个函数的吗?
标签: python function if-statement return return-type