Python, Mechanize - запрос запрещен robots.txt даже после set_handle_robots и add_headers

Я сделал веб-сканер, который получает все ссылки до 1-го уровня страницы, и от них он получает все ссылки и текст, а также ссылки на изображения и т. Д. вот целый код:

import urllib
import re
import time
from threading import Thread
import MySQLdb
import mechanize
import readability
from bs4 import BeautifulSoup
from readability.readability import Document
import urlparse

url = ["http://sparkbrowser.com"]

i=0

while i<len(url):

    counterArray = [0]

    levelLinks = []
    linkText = ["homepage"]
    levelLinks = []

    def scraper(root,steps):
        urls = [root]
        visited = [root]
        counter = 0
        while counter < steps:
            step_url = scrapeStep(urls)
            urls = []
            for u in step_url:
                if u not in visited:
                    urls.append(u)
                    visited.append(u)
                    counterArray.append(counter +1)
            counter +=1
        levelLinks.append(visited)
        return visited

    def scrapeStep(root):
        result_urls = []
        br = mechanize.Browser()
        br.set_handle_robots(False)
        br.set_handle_equiv(False)
        br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

        for url in root:
            try:
                br.open(url)

                for link in br.links():
                    newurl = urlparse.urljoin(link.base_url, link.url)
                    result_urls.append(newurl)
                    #levelLinks.append(newurl)
            except:
                print "error"
        return result_urls


    scraperOut = scraper(url[i],1)

    for sl,ca in zip(scraperOut,counterArray):
        print "\n\n",sl," Level - ",ca,"\n"

        #Mechanize
        br = mechanize.Browser()
        page = br.open(sl)
        br.set_handle_robots(False)
        br.set_handle_equiv(False)
        br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
        #BeautifulSoup
        htmlcontent = page.read()
        soup = BeautifulSoup(htmlcontent)


        for linkins in br.links(text_regex=re.compile('^((?!IMG).)*

Все работает отлично, пока мой сканер не достигнет одного изfacebook links который он не может прочитать, но он дает мне ошибку

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

для линии 68, которая является:page = br.open(sl)

И я не знаю, почему, потому что, как вы можете видеть, я настроил механизироватьset_handle_robots а такжеadd_headers параметры.

Я не знаю, почему это так, но я заметил, что я получаю эту ошибку дляfacebook ссылки, в этом случаеfacebook.com/sparkbrowser и Google для.

Любая помощь или совет приветствуется.

ура

)): newesturl = urlparse.urljoin(linkins.base_url, linkins.url) linkTxt = linkins.text print newesturl,linkTxt for linkwimg in soup.find_all('a', attrs={'href': re.compile("^http://")}): imgSource = linkwimg.find('img') if linkwimg.find('img',alt=True): imgLink = linkwimg['href'] #imageLinks.append(imgLink) imgAlt = linkwimg.img['alt'] #imageAlt.append(imgAlt) print imgLink,imgAlt elif linkwimg.find('img',alt=False): imgLink = linkwimg['href'] #imageLinks.append(imgLink) imgAlt = ['No Alt'] #imageAlt.append(imgAlt) print imgLink,imgAlt i+=1

Все работает отлично, пока мой сканер не достигнет одного изfacebook links который он не может прочитать, но он дает мне ошибку

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

для линии 68, которая является:page = br.open(sl)

И я не знаю, почему, потому что, как вы можете видеть, я настроил механизироватьset_handle_robots а такжеadd_headers параметры.

Я не знаю, почему это так, но я заметил, что я получаю эту ошибку дляfacebook ссылки, в этом случаеfacebook.com/sparkbrowser и Google для.

Любая помощь или совет приветствуется.

ура

Ответы на вопрос(1)

Ваш ответ на вопрос