Python中的Scraper提供“拒绝访问”

2024-09-29 07:34:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python编写一个scraper来从页面中获取一些信息。与此页上显示的优惠标题相同:
https://www.justdial.com/Panipat/Saree-Retailers/nct-10420585

现在我使用以下代码:

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'))

但是当我执行这段代码时,它会给我一个错误:

^{pr2}$

我能做些什么来解决这个问题?在


Tags: 代码httpsimportcomsourcedefwwwextract
3条回答

如注释中所述,您需要指定允许的用户代理并将其作为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
def extract_source(url):
    headers = {"User-Agent":"Mozilla/5.0"}
    source=requests.get(url, headers=headers).text
    return source

输出:

^{pr2}$

{cdose没有响应站点请求

试试这个:

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'以潜在地避免解析错误。在

相关问题 更多 >