python web-scraping beautifulsoup linkedin mechanize

python - Error HTTP 999: solicitud denegada



web-scraping beautifulsoup (2)

Estoy tratando de raspar algunas páginas web de LinkedIn usando BeautifulSoup y sigo recibiendo el error "HTTP Error 999: Solicitud denegada". ¿Hay alguna forma de evitar este error? Si miras mi código, he intentado Mechanize y URLLIB2 y ambos me están dando el mismo error.

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


Debería utilizar la API de REST de LinkedIn , ya sea directamente o utilizando python-linkedin . Permite el acceso directo a los datos, en lugar de intentar raspar el sitio web pesado de JavaScript.


Intenta configurar el encabezado User-Agent . Agregue esta línea después de 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")]

Editar: si desea raspar sitios web, primero compruebe si tiene API o biblioteca, que trata con API.