를보고 :다운로드 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>
후!
ID가 원시 HTML에 분명히 표시되어 있으므로 'urlopen'을 사용하여 볼 수 있습니다. 이 div에 액세스하려고 시도하는 코드를 게시 할 수 있습니까? –
사용자 에이전트와 같이 보내는 HTTP 헤더에 의존 할 수도 있습니다. 파이어 폭스에서 보낸 것과 같은 헤더를 보내려고 했습니까? (요청 부분에서 볼 수 있습니다). 그들 중 일부는 중요 할 수도 있습니다. – huelbois
+1 @huelbois는 그것을 생각하지 않았고, 그것을 줄 것이다. 매튜 나는 정규식을 사용하여 'prodImageCell'을 찾고 일치하는 항목이없는 샘플을 게시합니다. – user562427