2017-02-01 5 views
4

Я пытаюсь закодировать скребок в Python, чтобы получить информацию со страницы. Как название из предложений, которые появляются на этой странице:
https://www.justdial.com/Panipat/Saree-Retailers/nct-10420585Скребок в Python дает «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', чтобы избежать ошибки синтаксического анализа.