像往常一样,我经常遇到一些问题,我已经彻底地寻找了一个对当前问题的答案,但却发现自己陷入了困境。以下是我搜索过的一些地方:
How to fix httplib.BadStatusLine exception?
Python httplib2 Handling Exceptions
python http status code
我的问题如下。我已经创建了一个蜘蛛,并希望对不同的URL进行爬行。当我独立地对每个URL进行爬行时,一切正常。但是,当我尝试同时对两者进行爬网时,会出现以下错误:httplib.BadStatusLine: ''
我遵循了一些我阅读过的建议(参见上面提到的链接),可以打印每个请求的response.status,但是response.url没有打印出来,并且会抛出错误。(我只打印这两个语句以尝试识别错误的来源)。
我希望这是清楚的。
我在用碎屑和硒

class PeoplePage(Spider):
    name = "peopleProfile"
    allowed_domains = ["blah.com"]
    handle_httpstatus_list = [200, 404]
    start_urls = [
        "url1",
        "url2"
    ]

    def __init__(self):
        self.driver = webdriver.Firefox()

    def parse(self, response):
        print response.status
        print '???????????????????????????????????'
        if response.status == 200:
            self.driver.implicitly_wait(5)
            self.driver.get(response.url)
            print response.url
            print '!!!!!!!!!!!!!!!!!!!!'

            # DO STUFF

        self.driver.close()

最佳答案

基于Python Doc,如果服务器用我们不理解的HTTP状态代码响应,则会引发httplib.BadStatusLine
您可以尝试传递此异常。如果要调用多个URL,则不应关闭驱动程序。
试试这个:

def parse(self, response):
    try:
        print response.status
        print '???????????????????????????????????'
        if response.status == 200:
            self.driver.implicitly_wait(5)
            self.driver.get(response.url)
            print response.url
            print '!!!!!!!!!!!!!!!!!!!!'

            # DO STUFF
    except httplib.BadStatusLine:
        pass

关于python - httplib.BadStatusLine:'',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27619258/

10-12 18:18