[PYTHON] regex href 속성에서 HTML에서 파이썬으로 URL을 추출하는 [duplicate]
PYTHONregex href 속성에서 HTML에서 파이썬으로 URL을 추출하는 [duplicate]
다음과 같이 문자열을 고려하십시오.
string = "<p>Hello World</p><a href="http://example.com">More Examples</a><a href="http://example2.com">Even More Examples</a>"
어떻게 파이썬으로 앵커 태그의 href 내부에서 URL을 추출 할 수 있습니까? 같은 것 :
>>> url = getURLs(string)
>>> url
['http://example.com', 'http://example2.com']
감사!
해결법
-
==============================
1.
import re url = '<p>Hello World</p><a href="http://example.com">More Examples</a><a href="http://example2.com">Even More Examples</a>' urls = re.findall('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', url) >>> print urls ['http://example.com', 'http://example2.com']
-
==============================
2.가장 좋은 대답은 ...
가장 좋은 대답은 ...
수용된 대답의 표현은 많은 경우를 그리워합니다. 무엇보다도 URL에는 유니 코드 문자가있을 수 있습니다. 당신이 원하는 정규 표현식은 여기에 있고, 그것을보고 난 후에, 당신은 정말로 결국 그것을 원하지 않는다고 결론을 내릴 수 있습니다. 가장 올바른 버전은 10,000 문자입니다.
틀림없이, URL에 많은 수의 일반 텍스트가있는 구조화되지 않은 텍스트로 시작하는 경우 10,000 자 길이의 정규 표현식이 필요할 수 있습니다. 그러나 입력 내용이 구조화되어 있다면 구조를 사용하십시오. 귀하의 명시된 목표는 "앵커 태그의 href 내부에서 URL을 추출하는 것입니다." 훨씬 간단한 것을 할 수있을 때 왜 10,000 문자 길이의 정규 표현식을 사용합니까?
많은 작업에서 Beautiful Soup를 사용하면 훨씬 빠르고 쉽게 사용할 수 있습니다.
>>> from bs4 import BeautifulSoup as Soup >>> html = Soup(s, 'html.parser') # Soup(s, 'lxml') if lxml is installed >>> [a['href'] for a in html.find_all('a')] ['http://example.com', 'http://example2.com']
외부 도구를 사용하지 않으려는 경우 Python에 내장 된 HTML 구문 분석 라이브러리를 직접 사용할 수도 있습니다. 다음은 HTMLParser의 정말 간단한 서브 클래스로 원하는 것을 정확히 수행 한 것입니다.
from html.parser import HTMLParser class MyParser(HTMLParser): def __init__(self, output_list=None): HTMLParser.__init__(self) if output_list is None: self.output_list = [] else: self.output_list = output_list def handle_starttag(self, tag, attrs): if tag == 'a': self.output_list.append(dict(attrs).get('href'))
테스트:
>>> p = MyParser() >>> p.feed(s) >>> p.output_list ['http://example.com', 'http://example2.com']
문자열을 받아들이고, feed를 호출하고, output_list를 반환하는 새로운 메소드를 만들 수도 있습니다. 이것은 html에서 정보를 추출하는 정규 표현식보다 훨씬 강력하고 확장 가능한 방식입니다.
from https://stackoverflow.com/questions/6883049/regex-to-extract-urls-from-href-attribute-in-html-with-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 time.sleep (0) | 2018.10.05 |
---|---|
[PYTHON] 한 목록의 요소를 변경하면 여러 목록이 변경됩니다. [중복] (0) | 2018.10.05 |
[PYTHON] Flask-Login은 TypeError를 발생시킵니다 : is_active 속성을 덮어 쓰려고 할 때 'bool'객체를 호출 할 수 없습니다. (0) | 2018.10.05 |
[PYTHON] 값 사이에 공백없이 변수를 인쇄하는 법 [duplicate] (0) | 2018.10.05 |
[PYTHON] python matplotlib 함수에서 산점도 업데이트 (0) | 2018.10.05 |