HTTP错误999:请求被拒绝

9

我正在尝试使用BeautifulSoup从LinkedIn爬取一些网页,但不断出现错误“HTTP错误999:请求被拒绝”。有没有避免这个错误的方法?如果你看看我的代码,我已经尝试了Mechanize和URLLIB2,两者都给我同样的错误。

from __future__ import unicode_literals
from bs4 import BeautifulSoup
import urllib2
import csv
import os
import re
import requests
import pandas as pd
import urlparse
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
from BeautifulSoup import BeautifulStoneSoup
import urllib
import urlparse
import pdb
import codecs
from BeautifulSoup import UnicodeDammit
import codecs
import webbrowser
from urlgrabber import urlopen
from urlgrabber.grabber import URLGrabber
import mechanize

fout5 = codecs.open('data.csv','r', encoding='utf-8', errors='replace')

for y in range(2,10,1):


    url = "https://www.linkedin.com/job/analytics-%2b-data-jobs-united-kingdom/?sort=relevance&page_num=1"

    params = {'page_num':y}

    url_parts = list(urlparse.urlparse(url))
    query = dict(urlparse.parse_qsl(url_parts[4]))
    query.update(params)

    url_parts[4] = urllib.urlencode(query)
    y = urlparse.urlunparse(url_parts)
    #print y



    #url = urllib2.urlopen(y)
    #f = urllib2.urlopen(y)

    op = mechanize.Browser() # use mecahnize's browser
    op.set_handle_robots(False) #tell the webpage you're not a robot
    j = op.open(y)
    #print op.title()


    #g = URLGrabber()
    #data = g.urlread(y)
    #data = fo.read()
    #print data

    #html = response.read()
    soup1 = BeautifulSoup(y)
    print soup1

1
这就是为什么不要通过抓取网站内容来违反其服务条款。 - Jonathon Reinhart
大多数情况下,这种故意恶意机器人行为需要受到打击:#告诉网页你不是机器人 - halfer
@halfer,你怎么做到的? - Calion
@Calion:你是网站所有者还是机器人操作员? - halfer
后者,有点像。我有一个Siri快捷方式,可以爬取网站并触发999错误。 - Calion
2个回答

5

7
你需要公司网站的管理员权限才能获取公开的公司信息,这很愚蠢。 - mmx73

4

尝试设置User-Agent头。在op.set_handle_robots(False)后添加这一行。

op.addheaders = [('User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36")]

编辑:如果您想要爬取网站数据,请先检查该网站是否有API或者处理API的库。


1
使用伪造的UA、代理、忽略robots.txt或过于迅速地进行爬取,这些都是操作所谓的“行为不端机器人”的途径。 - halfer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接