2017-02-01 2 views
4

페이지에서 정보를 얻기 위해 파이썬으로 스크레이퍼를 코딩하려고합니다. 이 페이지에 표시되는 이벤트의 제목처럼 : 지금까지
https://www.justdial.com/Panipat/Saree-Retailers/nct-10420585파이썬의 Scraper는 "Access Denied"를 제공합니다

나는이 코드를 사용합니다

import bs4 
import requests 

def extract_source(url): 
    source=requests.get(url).text 
    return source 

def extract_data(source): 
    soup=bs4.BeautifulSoup(source) 
    names=soup.findAll('title') 
    for i in names: 
     print i 

extract_data(extract_source('https://www.justdial.com/Panipat/Saree-Retailers/nct-10420585')) 

을하지만이 코드를 실행하면, 그것은 나에게 오류 제공 :

<titlee> Access Denied</titlee> 

이 문제를 해결하려면 어떻게해야합니까? 댓글에서 언급 된

+0

아마 User-Agent를 설정해야합니다. 나는 당신이 더 많은 도움을 얻을 수있는 stackoverflow로 이동이 투표를 해요. –

답변

4

으로, 당신은 headers로 허용 사용자 에이전트를 지정하고 전달해야

def extract_source(url): 
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'} 
    source=requests.get(url, headers=headers).text 
    return source 
0
def extract_source(url): 
    headers = {"User-Agent":"Mozilla/5.0"} 
    source=requests.get(url, headers=headers).text 
    return source 

아웃 :

<title>Saree Retailers in Panipat - Best Deals online - Justdial</title> 

는 귀하의 요청에 User-Agent 추가 일부 사이트는 사용자 에이전트가없는 요청에 응답하지 않습니다.

0

시도해보십시오.

import bs4 
import requests 

def extract_source(url): 
    agent = {"User-Agent":"Mozilla/5.0"} 
    source=requests.get(url, headers=agent).text 
    return source 

def extract_data(source): 
    soup=bs4.BeautifulSoup(source, 'lxml') 
    names=soup.findAll('title') 
    for i in names: 
    print i 

extract_data(extract_source('https://www.justdial.com/Panipat/Saree-Retailers/nct-10420585')) 

구문 분석 오류를 피하기 위해 'lxml'을 추가했습니다.