import lxml.html as LH
import urllib2
url = 'http://espn.go.com/nba/team/roster/_/name/bos/boston-celtics'
doc = LH.parse(urllib2.urlopen(url))
print(doc.xpath('''
//div[@id="my-players-table"]/div//table[1]//tr/td[2]/a/text()''')[1:])
해부하기 위해 노력하고있어 링크가
['Brandon Bass', 'Avery Bradley', 'Jae Crowder', 'Jeff Green', 'Jameer Nelson',
'Kelly Olynyk', 'Phil Pressey', 'Marcus Smart', 'Jared Sullinger', 'Marcus
Thornton', 'Evan Turner', 'Gerald Wallace', 'Brandan Wright', 'James Young',
'Tyler Zeller']
페이지를 긁어, 제일 먼저 산출 urllib 또는 요청을 사용하여받은 HTML을 시각적으로 검사하는 것 :
import urllib2
url = 'http://espn.go.com/nba/team/roster/_/name/bos/boston-celtics'
response = urllib2.urlopen(url)
with open('/tmp/test.html', 'wb') as f:
f.write(response.read())
urllib 또는 요청이 JavaScript를 처리하지 않기 때문에 HTML이 GUI 브라우저에서 보는 것과 다른 경우가 있습니다. 이 경우 셀레늄과 같은 다른 도구 (예 : )가 필요할 수 있습니다. 그러나이 경우, "브랜든 베이스"에 대한 텍스트 검색 데이터가 urllib2를로 다운로드 HTML에 액세스 할 수 있습니다 보여줍니다 당신이 출발점으로 게시 XPath를 사용
<td class="sortcell"><a href="http://espn.go.com/nba/player/_/id/2745/brandon-bass">Brandon Bass</a></td>
, 당신은 다음을 사용할 수 있습니다 대화 형 파이썬 세션이 올바른 XPath를 확인하는 방법은 다음과 같습니다
In [80]: import lxml.html as LH
In [81]: import urllib2
In [82]: url = 'http://espn.go.com/nba/team/roster/_/name/bos/boston-celtics'
In [83]: doc = LH.parse(urllib2.urlopen(url))
In [84]: [LH.tostring(elt) for elt in doc.xpath('//div[@id="my-players-table"]/div//table/tr')]
Out[84]:
['<tr class="stathead"><td colspan="8">Team Roster</td></tr>',
'<tr class="colhead"><td><a href="http://espn.go.com/nba/team/roster/_/name/bos/sort/jersey/order/false/boston-celtics">NO.</a></td><td><a href="http://espn.go.com/nba/team/roster/_/name/bos/order/false/boston-celtics">NAME</a></td><td>POS</td><td><a href="http://espn.go.com/nba/team/roster/_/name/bos/sort/age/order/false/boston-celtics">AGE</a></td><td><a href="http://espn.go.com/nba/team/roster/_/name/bos/sort/height/order/false/boston-celtics">HT</a></td><td><a href="http://espn.go.com/nba/team/roster/_/name/bos/sort/weight/order/false/boston-celtics">WT</a></td><td>COLLEGE</td><td>2014-2015 SALARY</td></tr>',
In [86]: [elt.text_content() for elt in doc.xpath('//div[@id="my-players-table"]/div//table/tr/td')]
//div[@id="my-players-table"]/div//table[1]//tr/td[2]/a/text()
(위 이어질, 나는 0,123,922 사용했다기능은 HTML 미리보기를 검사하고, elt.text_content()
는 다양한 요소에 포함 된 텍스트를 검사 할 수 있습니다.)
이 내가 XPath를 이해하는 읽기 first tutorial입니다.
벨트 밑에 기초가 생기면 the XPath v1.0 specification을 읽을 수 있습니다. XPath v2 및 XPath v3도 있지만 현재 lxml은 XPath 1.0 만 지원합니다.
동시에 lxml을 사용한다고 가정하면 lxml docs을 읽을 수 있습니다.
나는 또한 this one과 같은 유용한 정보를 찾을 수 있습니다.
새로운 기능이나 기술이 생길 때마다, 최소한의 예제 인 데모 코드를 작성하여 (자체) 작동 방식을 보여줍니다. 그런 식으로 XYZ를 다시해야 할 때마다 실행 가능한 코드부터 시작할 수 있습니다.