이 기사에서는 현재 페이지의 모든 링크를 얻는 Python의 방법을 주로 소개합니다. Python에서 일반적으로 사용되는 4가지 방법을 예제와 함께 비교 분석합니다. 또한 필요한 iframe 프레임 내에서 링크를 얻는 방법도 함께 제공됩니다. 이 문서의 다음
예제는 현재 페이지의 모든 링크를 얻는 Python의 네 가지 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 정보는 다음과 같습니다.
''' 得到当前页面所有连接 ''' import requests import re from bs4 import BeautifulSoup from lxml import etree from selenium import webdriver url = 'http://www.testweb.com' r = requests.get(url) r.encoding = 'gb2312' # 利用 re (太黄太暴力!) matchs = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" , r.text) for link in matchs: print(link) print() # 利用 BeautifulSoup4 (DOM树) soup = BeautifulSoup(r.text,'lxml') for a in soup.find_all('a'): link = a['href'] print(link) print() # 利用 lxml.etree (XPath) tree = etree.HTML(r.text) for link in tree.xpath("//@href"): print(link) print() # 利用selenium(要开浏览器!) driver = webdriver.Firefox() driver.get(url) for link in driver.find_elements_by_tag_name("a"): print(link.get_attribute("href")) driver.close()
참고: 페이지에 iframe이 포함된 경우 위의 네 가지 방법으로는 iframe에 포함된 페이지의 모든 태그를 얻을 수 없습니다! ! ! 이때:
# 再打开所有iframe查找全部的a标签 for iframe in soup.find_all('iframe'): url_ifr = iframe['src'] # 取得当前iframe的src属性值 rr = requests.get(url_ifr) rr.encoding = 'gb2312' soup_ifr = BeautifulSoup(rr.text,'lxml') for a in soup_ifr.find_all('a'): link = a['href'] m = re.match(r'http:\/\/.*?(?=\/)',link) #print(link) if m: all_urls.add(m.group(0))
위 내용은 Python은 네 가지 방법을 사용하여 현재 페이지의 모든 링크를 비교 분석합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!