re
모듈을 사용하여 모든 attrs를 포함하여 문자열에서 모든 HTML 노드를 추출합니다. 그러나 각 attr을 하나의 그룹으로 만들려면 matchobj.group()
을 사용하면됩니다. 노드의 attrs 수는 유연합니다. 이것은 내가 혼란스러워하는 곳입니다. 나는 그런 정규식을 쓰는 방법을 모른다. </?(\w+)(\s\w+[^>]*?)*/?>'
을 시도했지만 과 같은 노드의 경우 두 그룹에만 [('a'), ('style="bbb")]
을 부여 할 수 있습니다.
좋은 HTML 파서가 있다는 것을 알고 있습니다. 그러나 실제로 저는 attrs의 값을 추출하지 않을 것입니다. 원시 문자열을 수정해야합니다.regex를 사용하여 모든 HTML attrs 추출
답변
설명
은 속성의 무한한 수를 캡처하려면 :
>>> from bs4 import BeautifulSoup as BS
>>> html = """<a href='aaa' style='bbb'>"""
>>> soup = BS(html)
>>> mytag = soup.find('a')
>>> print mytag['href']
aaa
>>> print mytag['style']
bbb
을 아니면 사전을 원하는 경우 : BeautifulSoup
사용 전체 요소. 그런 다음 요소를 반복하고 일치하는 속성의 배열을 가져옵니다.
정규식은 모든 요소를 잡아합니다 :
작업을 참조하십시오 \s\w+=(?:'[^']*'|"[^"]*"|[^'"][^\s>]*)(?=\s|>)
파이썬 예 : <\w+(?=\s|>)(?:[^>=]|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?>
정규식 하나의 요소에서 모든 속성을 잡아 예 : http://repl.it/J0t/4
코드
import re
string = """
<a href="i.like.kittens.com" NotRealAttribute=' true="4>2"' class=Fonzie>text</a>
""";
for matchElementObj in re.finditer(r'<\w+(?=\s|>)(?:[^>=]|=\'[^\']*\'|="[^"]*"|=[^\'"][^\s>]*)*?>', string, re.M|re.I|re.S):
print "-------"
print "matchElementObj.group(0) : ", matchElementObj.group(0)
for matchAttributesObj in re.finditer(r'\s\w+=(?:\'[^\']*\'|"[^"]*"|[^\'"][^\s>]*)(?=\s|>)', string, re.M|re.I|re.S):
print "matchAttributesObj.group(0) : ", matchAttributesObj.group(0)
출력
-------
matchElementObj.group(0) : <a href="i.like.kittens.com" NotRealAttribute=' true="4>2"' class=Fonzie>
matchAttributesObj.group(0) : href="i.like.kittens.com"
matchAttributesObj.group(0) : NotRealAttribute=' true="4>2"'
matchAttributesObj.group(0) : class=Fonzie
Please don't use regex. 그것은 당신이 당겨 처음 두 단계 과정을 할 필요가
>>> print mytag.attrs
{'style': 'bbb', 'href': 'aaa'}
나는 HTML 파서가 좋은 선택이어야하지만 실제로는 그들이 나를 위해 일할 수 있다고 생각하지 않는다. 원시 문자열을 수정해야합니다. – zhangyangyu
@zhangyangyu [this] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#replace-with)를보십시오 – TerryA
downvoter가 downvoted 이유를 명확히 할 수 있습니까? – TerryA
- 1. Regex를 사용하여 URL 추출
- 2. Java - RegEx를 사용하여 HTML 문자열에서 정보 추출
- 3. RegEx를 사용하여 모든 매개 변수 추출
- 4. Regex를 사용하여 MySQL 텍스트 추출
- 5. RegEx를 사용하여 양식 필드 추출
- 6. Regex를 사용하여 캡처 그룹 추출
- 7. regex를 사용하여 문자열에서 ICCID 추출
- 8. idoc 스크립트에서 regex를 사용하여 html 문자열에서 파일 이름 추출
- 9. VB에서 Regex를 사용하여 문자열에서 모든 Excel 함수 유형 추출
- 10. Python Regex를 사용하여 RSS 피드에서 콘텐츠 추출
- 11. RegEx를 사용하여 많은 전화 번호 추출
- 12. regex를 사용하여 하위 문자열 추출 PHP
- 13. regex를 사용하여 sql create 문에서 데이터 추출
- 14. PHP를 사용하여 본문의 모든 html 태그 추출
- 15. 은행 송달에서 regex를 사용하여 데이터 추출
- 16. regex를 사용하여 C에서 문자열의 특정 값 추출 #
- 17. Regex를 사용하여 LDAP 경로에서 OU 이름 추출
- 18. Perl의 Regex를 사용하여 사용자 입력에서 정보 추출
- 19. Regex를 사용하여 Html 속성 검색
- 20. Regex를 사용하여 HTML 태그간에 데이터를 추출하려면 어떻게해야합니까?
- 21. Ruby - Regex를 사용하여 모든 HTML 페이지에서 Twitter URL 일치
- 22. Regex를 사용해도 안전합니까? (HTML)
- 23. RegEx를 사용하여 html 요소와 내용을 제거하려면 어떻게해야합니까?
- 24. Java를 사용하여 HTML 태그 추출
- 25. 아름다운 스프 HTML 추출
- 26. regex를 사용하여 html 글꼴 태그 바꾸기
- 27. 자바에서 regex를 사용하는 문자열에서 번호 추출
- 28. HTML 소스에서 정보를 추출 하시겠습니까?
- 29. Regex를 사용하여 특정 HTML 태그 바꾸기
- 30. pattern.compile에 REGEX를 사용하여 특정 HTML 태그 제거
FFS ... http://www.crummy.com/software/BeautifulSoup/ –
HTML 파서 대신 정규식의 사용을 고려 . http://www.crummy.com/software/BeautifulSoup/ – Achrome
정상적인 첫 번째 경기는 두 번째 경기가 덮어 씁니다. –