. 쿼리와
echo '<a href="http://store.steampowered.com/search/?category2=2" class="name">Co-Op</a>' | tidy -asxhtml -numeric 2> /dev/null | xmllint --html --xpath 'normalize-space(//a[@class="name" and @href="http://store.steampowered.com/search/?category2=2"])' - 2>/dev/null
:
normalize-space(//a[@class="name" and @href="http://store.steampowered.com/search/?category2=2"])
//
어떤 태그를 의미한다 (
그러나 HTML을 가진 좋은 점은, 그것은 XML로 변환 할 수 있으며, XML 파싱을위한 좋은 툴킷을 가지고 있다는 것입니다 깊이과 관계없이) a
은 a
태그를 의미하며, class=name
및 href=(the link)
이라는 제약 조건을 지정합니다. 그런 다음 해당 태그 <a>
과 </a>
사이에 normalize-space
콘텐츠를 반환했습니다. 당신의 정규식에
import urllib2
from bs4 import BeautifulSoup
page = urllib2.urlopen("http://store.steampowered.com/app/24860/").read()
soup = BeautifulSoup(page)
print soup.find_all('a',attrs={'class':'name','href':'http://store.steampowered.com/search/?category2=2'})
댓글 :
파이썬에서 당신은 사용할 수 있습니다
문제는 정규식-지시가 아닌 문자로 해석됩니다 ?
같은 토큰이 포함되어 있다는 것입니다. 당신은 그들을 탈출해야합니다. 그것은 아마 읽어야
<a\s+href="http://store\.steampowered\.com/search/\?category2=2"\s+class="name"\S*>(.*?)</a>\g
가 나는 또한
\s
로
\b
교체,
\s
은 공백, 탭, 줄 바꿈 등의 공백 문자를 의미한다. 정규 표현식이 꽤 깨지기 쉽지만,
href
과
class
을 교환하기로 결정한 경우 프로그램에 문제가 있습니다. 이러한 문제의 대부분은 실제로 솔루션이지만 XML 분석 도구를 사용하는 것이 좋습니다.
정규식을 사용하여 HTML을 구문 분석하는 것은 일반적으로 좋지 않습니다. HTML 파싱 라이브러리 또는 도구를 사용하면 훨씬 편리 할 것입니다. – Jason