2015-01-16 2 views
0

나는이 웹 페이지의 각 제품에 대한 href를 긁어 모으기 위해 beautifulsoup를 사용하고 있습니다 : http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=digital+camera. 이러한하는 HREF는 "키워드 = 디지털 + 카메라"로 끝날 여기 내 코드입니다 : 내가 다시 위의 스크립트에서 아무것도 없어python을 사용하여 웹 사이트에서 각 제품의 href를 가져옵니다

from bs4 import BeautifulSoup 
import requests 

url = "http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=digital+camera" 
keyword = "keywords=digital+camera" 
r = requests.get(url) 
data = r.text 
soup = BeautifulSoup(data) 
for link in soup.find_all('a'): 
    href = link.get('href') 
    if href is None: 
     continue 
    elif keyword in href: 
     print href 

, 나는 그것을 해결하기 위해 할 수있는 일이 있나요? 감사합니다.

+0

당신은 당신이 실제로 당신이 점점 생각지고 있는지 오링하는 HREF 및 "Ctrl + F"를 모두 인쇄를 시도 –

+0

수입을 누락? soup.find_all ('a')]'에서 x에 대해'[x.get ("href")를 인쇄하고 그 안에 "keywords = digital + camera"문자열이있는 것은 아무것도 얻지 못했습니다 – TehTris

+0

@TehTris 예, 나는 노력했다. 나는 키워드로 아무것도 얻지 않았다. – c20ad4d76fe97759aa27a0c99bff67

답변

1

아마존은 사용자 에이전트 ("브라우저 이름")를 감지하고 해당 값을 기반으로 콘텐츠를 변경합니다. 요청에 사용자 에이전트를 추가하면 "keyword = digital + camera"문자열이 추가됩니다. 그렇지 않으면, 당신은하지 않습니다.

url ="http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=digital+camera" 
import urllib2 
from bs4 import BeautifulSoup 
req = urllib2.Request(url, headers={ 'User-Agent': 'Mozilla/5.0' }) 
html = urllib2.urlopen(req).read() 
soup = BeautifulSoup(html) 
links = soup.find_all('a') 
for l in links: 
    href = l.get('href') 
    title = l.get('title', '') 
    if 'Sony W800/B 20.1 MP Digital' in title: 
     print(href) # prints: http://www.amazon.com/Sony-W800-Digital-Camera-Black/dp/B00I8BIBCW/ref=sr_1_2/183-0842534-8993425?s=photo&ie=UTF8&qid=1421400650&sr=1-2&keywords=digital+camera 
+0

고마워. 그러나 그래픽 지원없이 서버에서이 메서드를 사용할 수 없습니다. – c20ad4d76fe97759aa27a0c99bff67

+0

@ c20ad4d76fe97759aa27a0c99bff67이를 위해 그래픽 지원이 필요하지 않습니다. 명령 줄에서이 모든 작업을 수행했습니다. 요청에 헤더 필드를 추가하기 만하면 해당 키워드가 나타납니다. –

+0

Thx. 파이어 폭스 없이도 잘 작동합니다. Mozilla/5.0을 선택한 이유를 설명해 주시겠습니까? – c20ad4d76fe97759aa27a0c99bff67

관련 문제