2017-12-17 37 views
3

파이썬에서 웹 페이지에서 다른 카테고리 이름을 얻기 위해 스크래퍼를 작성했지만 해당 페이지에서 아무것도 가져올 수 없습니다. 나는 내가 잘못 가고있는 곳을 알아낼 수 없도록 진지하게 혼란 스럽다. 어떤 도움이라도 대단히 감사 할 것입니다. URL 다음웹 페이지에서 카테고리 제목을 다룰 수 없습니다.

내가 지금까지 시도한 것입니다 : 여기

는 웹 페이지에 대한 링크입니다

from bs4 import BeautifulSoup 
import requests 

res = requests.get("replace_with_above_url",headers={"User-Agent":"Mozilla/5.0"}) 
soup = BeautifulSoup(res.text,"lxml") 
for items in soup.select('.slide_container .h3.standardTitle'): 
    print(items.text) 

요소 어느 하나의 카테고리 이름에서 난 후 :

<div class="slide_container"> 
    <a href="/offers/furniture/" tabindex="0"> 
     <picture style="float: left; width: 100%;"><img style="width:100%" src="/_m4/9/8/1513184943_4413.jpg" data-w="270"></picture> 
     <div class="floated-details inverted" style="height: 69px;"> 
      <div class="h3 margin-top-sm margin-bottom-sm standardTitle"> 
       Furniture Offers       #This is the name I'm after 
      </div> 
      <p class="carouselDesc"> 
      </p> 
     </div> 
    </a> 
</div> 
+0

res.text에서 올바른 html을 사용하고 있습니까? – imox

+0

서버가 당신이 데이터를 긁적 거리지 않기를 바라는 것처럼 보입니다. 요청은 브라우저에 실제로 표시되는 페이지가 아니라 다음 내용이 포함 된 블록 페이지를 반환합니다. ""www.therrange.co. 귀하의 브라우저에 관한 어떤 것이 우리가 당신을 로봇이라고 생각하게 만들었습니다. 이런 일이 일어날 수있는 몇 가지 이유가 있습니다 ... " – Andersson

+0

셀레늄으로 시도했지만 최종 결과는 @sir Andersson을 언급 한대로입니다. – SIM

답변

2
from bs4 import BeautifulSoup 
import requests 

headers = { 
    'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 
'accept-encoding':'gzip, deflate, br', 
'accept-language':'en-US,en;q=0.9', 
'cache-control':'max-age=0', 
'referer':'https://www.therange.co.uk/', 
'upgrade-insecure-requests':'1', 
'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36', 
} 
res = requests.get("https://www.therange.co.uk/",headers=headers) 
soup = BeautifulSoup(res.text,'html.parser') 
for items in soup.select('.slide_container .h3.standardTitle'): 
    print(items.text) 

헤더가 가장 중요한 부분은 봇으로 다음 서버 LL 치료를 어떤 헤더를 그리워 scrapping.if의 때문에이

사용자 에이전트가 충분하지 않습니다보십시오.

+0

당신은 단지 @Tailor Devendra입니다. 당신의 솔루션은 마침내 성공했습니다. 잠시 후 받아 들일거야. 그래도 뭔가 알고 싶습니다. devtools에서 볼 수있는 것에 따라 헤더에 추가 할 쿠키와 함께 몇 가지 매개 변수를 생략했습니다. 또한 헤더에 추가 매개 변수'referer'를 추가했습니다. 당신은 제 생각을 말해서 왜 제가 앞으로 고려할 수 있겠습니까? 감사. 다시 말하지만, 당신의 솔루션은 트릭을 완벽하게 해냈습니다. – SIM

-1

"lxml"

대신 "html.parser"을 사용하십시오.
+0

어떻게이 문제가 해결 되었습니까? – SIM

+0

변수 'res.text'가 위의 html을 포함하고 더 계산 된 것으로 가정합니다. 'res.text'에 들어있는 html을 붙여 넣을 수 있습니까? – DecoderReloaded