Просматривать каталоги веб-сайтов с помощью BeautifulSoup? - PullRequest
1 голос
/ 20 июня 2019

Это мой код: https://pastebin.com/R11qiTF4

from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as req
from urllib.parse import urljoin
import re

urls = ["https://www.helios-gesundheit.de"]
domain_list = ["https://www.helios-gesundheit.de/kliniken/schwerin/"]
prohibited = ["info", "news"]
text_keywords = ["Helios", "Helios"]
url_list = []

desired = "https://www.helios-gesundheit.de/kliniken/schwerin/unser-angebot/unsere-fachbereiche-klinikum/allgemein-und-viszeralchirurgie/team-allgemein-und-viszeralchirurgie/"

for x in range(len(domain_list)):
    url_list.append(urls[x]+domain_list[x].replace(urls[x], ""))

print(url_list)

def prohibitedChecker(prohibited_list, string):
    for x in prohibited_list:
        if x in string:
            return True
        else:
            return False
        break

def parseHTML(url):
    requestHTML = req(url)
    htmlPage = requestHTML.read()
    requestHTML.close()
    parsedHTML = soup(htmlPage, "html.parser")
    return parsedHTML

searched_word = "Helios"

for url in url_list:
    parsedHTML = parseHTML(url)
    href_crawler = parsedHTML.find_all("a", href=True)
    for href in href_crawler:
        crawled_url = urljoin(url,href.get("href"))
        print(crawled_url)
        if "www" not in crawled_url:
            continue
        parsedHTML = parseHTML(crawled_url)
        results = parsedHTML.body.find_all(string=re.compile('.*{0}.*'.format(searched_word)), recursive=True)
        for single_result in results:
            keyword_text_check = prohibitedChecker(text_keywords, single_result.string)
            if keyword_text_check != True:
                continue
            print(single_result.string)

Я пытаюсь напечатать содержимое переменной '' требуемое ''.Проблема заключается в следующем, мой код даже не запрашивает URL «требуемого», потому что он не входит в объем веб-сайта.'' требуемая '' ссылка href находится внутри другой ссылки href, которая находится внутри страницы, которую я сейчас перебираю.Я решил исправить это, добавив еще один цикл for в строке 39 for loop, который запрашивает каждый href, найденный в моем первом, но это слишком грязно и неэффективно

Есть ли способ получить список всехкаталог сайта url?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...