Cet article présente principalement la méthode Python pour obtenir tous les liens de la page actuelle. Il compare et analyse quatre méthodes couramment utilisées pour obtenir des liens de page en Python sous forme d'exemples. Il est également livré avec la méthode d'obtention de liens dans l'iframe. framework.Amis qui en ont besoin Vous pouvez vous référer à ce qui suit
Cet article décrit les quatre méthodes de Python pour obtenir tous les liens de la page actuelle. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
''' 得到当前页面所有连接 ''' 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()
Remarque : si la page contient une iframe, toutes les balises de la page contenues dans l'iframe, vous ne pourrez pas utiliser les quatre méthodes ci-dessus pour l'obtenir ! ! ! En ce moment :
# 再打开所有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))
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!