2014-09-16 3 views
0

도움이 필요합니다. 나는 '요청 lib'뿐만 아니라 BeautifulSoup4 lib와 함께 웹 크롤러를 만들려고 노력하고 있지만, 성공적으로 수행하려면 해당 쿼리를 검색 할 수있는 특정 쿠키를 활성화하는 링크를 방문해야합니다. 특정 쿠키 설정을 URL로 유발하지 않는파이썬 웹 크롤러로 쿠키 시뮬레이션

import requests 
from bs4 import BeautifulSoup 

def web_spider(max_pages, query): 
    page = 1 
    while page <= max_pages: 
     url = r'http://website.com/search/index?page=' + str(page) + '&q=' + query 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text) 
     for link in soup.finaAll('a', {'class': 'comments_link'}): 
      href = 'http://website.com/' + link.get('href') 
      print(href) 
     page += 1 

문제가 특정 querys 함께, 그것은 때문에하지가 활성화되고 올바른 쿠키에 아무것도 표시되지 않습니다. 내 코드의 현재 기능에 따라 취할 수있는 최선의 행동 방안은 무엇입니까?

답변

4

사용하십시오 Session() object와 쿠키가 자동으로 처리됩니다

session = requests.Session() 

def web_spider(max_pages, query): 
    page = 1 
    while page <= max_pages: 
     url = 'http://website.com/search/index' 
     params = {'page': page, 'q': query} 
     source_code = session.get(url, params=params) 
     plain_text = source_code.content 
     soup = BeautifulSoup(plain_text) 
     for link in soup.select('a.comments_link[href]'): 
      href = 'http://website.com/' + link['href'] 
      print(href) 
     page += 1 

글로벌 session 개체가 이제 모든 쿠키를 추적합니다.

나는 또한 requests 핸들 인코딩을 위해 params 매개 변수를 사용하여 코드를 변경, 당신은 response.content 사용해야 하지response.text 올바른 인코딩을 BeautifulSoup로에 의해 검출되어 있는지 확인하기 위해, HTML을 구문 분석.

+0

'session = Session()'을 입력하면 "Unresolved reference 'Session'"이 표시됩니다. " – ThatBenderGuy

+0

'session = requests.Session()'으로 변경했습니다. – ThatBenderGuy

+0

@ThatBenderGuy : 예, 죄송합니다, 저의 실수입니다. –

관련 문제