파이썬을 사용하여 웹사이트에서 내부 링크만 크롤링 (Crawl only internal links from a website using python)


문제 설명

파이썬을 사용하여 웹사이트에서 내부 링크만 크롤링 (Crawl only internal links from a website using python)

사이트의 내부 링크만 처리하는 크롤러를 작성하려고 합니다. 나는 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:

Here's your code, with the addition of the logic i commented above.

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)

(by Carlos Castillokerwei)

참조 문서

  1. Crawl only internal links from a website using python (CC BY‑SA 2.5/3.0/4.0)

#web-crawler #python-2.7 #python-requests #beautifulsoup






관련 질문

UnicodeError: URL에 ASCII가 아닌 문자가 포함되어 있습니다(Python 2.7). (UnicodeError: URL contains non-ASCII characters (Python 2.7))

크롤링 출력 - 두 변수 연결 (Crawling output - connecting two variables)

Python2.7에서 효과적인 크롤러를 만드는 방법 (How to make an effective crawler in Python2.7)

이 텍스트가 다른 기사의 일부임을 Google에 알리는 방법 (How to tell google this text is part of another article)

크롤링하는 HTML 페이지에서 JavaScript 개체를 구문 분석하는 방법은 무엇입니까? (How to parse a JavaScript object from a HTML page I crawl?)

데이터 크롤링 또는 API 사용 (Crawling data or using API)

파이썬을 사용하여 웹사이트에서 내부 링크만 크롤링 (Crawl only internal links from a website using python)

받은 응답에서 HTML 코드를 긁는 방법은 무엇입니까? (How to scrape the html code from the response received?)

PHP를 사용하여 웹 사이트에서 클래스 이름 스크래핑 (Scraping class name on a website using php)

Scrapy Spider를 사용하는 Craigslist Scraper가 기능을 수행하지 않음 (Craigslist Scraper using Scrapy Spider not performing functions)

BeautifulSoup: 이 링크에서 모든 기사 링크를 가져오는 방법은 무엇입니까? (BeautifulSoup: how to get all article links from this link?)

나는 클라이언트입니다. 선택적으로 http 응답에서 헤더를 제거할 수 있습니까? (I'm client. Can I remove header from http response optionally?)







코멘트