Heim  >  Artikel  >  Backend-Entwicklung  >  Python verwendet vier Methoden, um eine vergleichende Analyse aller Links auf der aktuellen Seite zu erreichen

Python verwendet vier Methoden, um eine vergleichende Analyse aller Links auf der aktuellen Seite zu erreichen

黄舟
黄舟Original
2017-08-20 10:28:382022Durchsuche

In diesem Artikel wird hauptsächlich die Methode von Python zum Abrufen aller Links auf der aktuellen Seite vorgestellt. Er vergleicht und analysiert vier häufig verwendete Methoden zum Abrufen von Seitenlinks in Form von Beispielen. Außerdem wird die Methode zum Abrufen von Links innerhalb des Iframes vorgestellt Framework. Freunde, die es brauchen Sie können auf Folgendes verweisen

Dieser Artikel beschreibt vier Methoden für Python, um alle Links auf der aktuellen Seite zu erhalten. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:


'''
得到当前页面所有连接
'''
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()

Hinweis: Wenn die Seite einen Iframe enthält, sind alle Tags der Seite enthalten Im Iframe ist es nicht möglich, die oben genannten vier Methoden zu verwenden, um es zu erhalten! ! ! Zu diesem Zeitpunkt:


# 再打开所有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))

Das obige ist der detaillierte Inhalt vonPython verwendet vier Methoden, um eine vergleichende Analyse aller Links auf der aktuellen Seite zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn