Maison > développement back-end > Tutoriel Python > Python utilise quatre méthodes pour réaliser une analyse comparative de tous les liens de la page actuelle

Python utilise quatre méthodes pour réaliser une analyse comparative de tous les liens de la page actuelle

黄舟
Libérer: 2017-08-20 10:28:38
original
2044 Les gens l'ont consulté

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=\&#39;).+?(?=\&#39;)" , r.text)
for link in matchs:
  print(link)
print()
# 利用 BeautifulSoup4 (DOM树)
soup = BeautifulSoup(r.text,&#39;lxml&#39;)
for a in soup.find_all(&#39;a&#39;):
  link = a[&#39;href&#39;]
  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()
Copier après la connexion

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(&#39;iframe&#39;):
  url_ifr = iframe[&#39;src&#39;] # 取得当前iframe的src属性值 
  rr = requests.get(url_ifr)
  rr.encoding = &#39;gb2312&#39;
  soup_ifr = BeautifulSoup(rr.text,&#39;lxml&#39;)
  for a in soup_ifr.find_all(&#39;a&#39;):
    link = a[&#39;href&#39;]
    m = re.match(r&#39;http:\/\/.*?(?=\/)&#39;,link)
    #print(link)
    if m:
      all_urls.add(m.group(0))
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal