Сканирование только внутренних ссылок с веб-сайта с использованием Python - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь написать сканер, который обрабатывает только внутренние ссылки сайта. Я использую Python 2.7, красивый суп и запросы, и мне нужны все внутренние ссылки (абсолюты и родственники).

Мой клиент запросил у меня сканер для сайта, но я хочу, чтобы он сканировал только внутренние ссылки. Мне нужно, чтобы он игнорировал jpg / png / gif и другие URL-адреса, поэтому он обрабатывает только страницы.

import re, request
from bs4 import BeautifulSoup

def processUrl(url):
    if not url in checkedUrls:
        try:
            if 'text/html' in requests.head(url).headers['Content-Type']:
                req=requests.get(url)
                if req.status_code==200:
                    print url
                    checkedUrls.append(url)
                    html=BeautifulSoup(req.text,'html.parser')
                    pages=html.find_all('a')
                    for page in pages:
                        url=page.get('href')
                        processUrl(url)
        except:
            pass

checekdUrls=[]
url='http://sampleurl.com'
processUrl(url)

1 Ответ

0 голосов
/ 11 января 2019

Вот ваш код, с добавлением логики, которую я прокомментировал выше.

import re, request
from bs4 import BeautifulSoup

def processUrl(url, domain, checkedUrls=[]):
    if domain not in url:
        return checkedUrls

    if not url in checkedUrls:
        try:
            if 'text/html' in requests.head(url).headers['Content-Type']:
                req=requests.get(url)
                if req.status_code==200:
                    print url
                    checkedUrls.append(url)
                    html=BeautifulSoup(req.text,'html.parser')
                    pages=html.find_all('a')
                    for page in pages:
                        url=page.get('href')
                        processUrl(url)
        except:
            pass

    return checkedUrls


checekdUrls=[]
domain = 'sampleurl.com'
url='http://sampleurl.com'
checkedUrls = processUrl(url, domain, checkedUrls)
...