2012-02-23 2 views
1

를보고 :다운로드 amazon.co.uk 웹 페이지는 정확히 불을 지르고 같은 HTML 내가 URLLIB를 사용하여 웹 페이지를 다운로드하는 것으로 나타났습니다

http://www.amazon.co.uk/Darkness-II-Limited-PC-DVD/dp/B005ULLEX6

내가 urlopen 사용하여 돌아 컨텐츠 (URL) .read()는 파이어 버그가 보는 것과 다릅니다.

예 : 페이지의 이미지 영역에 불을 지르고를 가리키는 경우, 그것은 당신에게 사업부 아이디 = "prodImageCell"열 것을 파이썬을 통해 볼 때 그러나, 존재를 알려줍니다

, 그런 것은 없다 따라서 아름다운 것은 아무것도 찾지 못한다.

이미지가 javascript를 사용하여 생성 되었기 때문에 이것이 발생 했습니까?

질문 :

그래서 거의 똑같은 일이 방화범을 다운로드하는 방법은 URLLIB 사용 (대신 셀레늄 같은 것을 사용하지 않는)이보고됩니다.

이미지 중 하나의 소스 URL을 프로그래밍 방식으로 가져 오려고합니다. 예를 들어 prodImageCell이있는 div는 src = http : //ecx.images-amazon.com/images/I/51uPDvJGS3L입니다. AA300 .jpg 실제로 이미지 URL입니다.

답변 :

내가 올바른 방향으로, 하나 개의 요구에 저를 가리키는 대한 명성 :(

@huelbois에 대한 해결책 덕분에 발견이 없기 때문에 제대로 대답 할 수 사용자 에이전트에게 헤더를 사용합니다.

>>> import urllib2 
>>> import re 
>>> site = urllib2.urlopen('http://www.amazon.co.uk/\ 
Darkness-II-Limited-PC-DVD/dp/B005ULLEX6').read() 
>>> re.search('prodImageCell', site) 
>>> 
하기 전에

만세

>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101\ 
Firefox/7.0.1" 
>>> headers = {'User-Agent':user_agent} 
>>> req = urllib2.Request(url=url,headers=headers) 
>>> site = urllib2.urlopen(req).read() 
>>> re.search('prodImageCell', site) 
<_sre.SRE_Match object at 0x01487DB0> 

후!

+0

ID가 원시 HTML에 분명히 표시되어 있으므로 'urlopen'을 사용하여 볼 수 있습니다. 이 div에 액세스하려고 시도하는 코드를 게시 할 수 있습니까? –

+1

사용자 에이전트와 같이 보내는 HTTP 헤더에 의존 할 수도 있습니다. 파이어 폭스에서 보낸 것과 같은 헤더를 보내려고 했습니까? (요청 부분에서 볼 수 있습니다). 그들 중 일부는 중요 할 수도 있습니다. – huelbois

+0

+1 @huelbois는 그것을 생각하지 않았고, 그것을 줄 것이다. 매튜 나는 정규식을 사용하여 'prodImageCell'을 찾고 일치하는 항목이없는 샘플을 게시합니다. – user562427

답변

2

방금 ​​wget (urrlib처럼 작동합니다)으로 테스트했습니다. 요청 된 부분을 얻으려면 사용자 에이전트 헤더를 포함해야합니다.

wget -Other --header = '사용자 에이전트 : Mozilla/5.0 (Windows NT 6.1, rv : 9.0.1) Gecko/20100101 Firefox /9.0.1 'http://www.amazon.co.uk/Darkness-II-Limited-PC-DVD/dp/B005ULLEX6

은 요청 된 부분과 함께 html 페이지를 반환합니다.

oops : 지금 당장 당신이 내 이전 조언에 성공했습니다. 큰!

관련 문제