httplib.BadStatusLine:''

Jon*_*ruk 16 python selenium scrapy

和往常一样,我经常遇到问题,而且我已经彻底搜索了当前问题的答案,但却发现自己处于亏损状态.以下是我搜索过的一些地方: - 如何修复httplib.BadStatusLine异常? - Python httplib2处理异常 - python http状态代码

我的问题如下.我创建了一个蜘蛛,并希望抓取不同的网址.当我独立抓取每个网址时,一切正常.但是,当我尝试爬行时,我收到以下错误:httplib.BadStatusLine: ''

我已经遵循了一些我读过的建议(参见上面提到的链接)并且可以为每个请求打印response.status,但是response.url不会打印并且会抛出错误.(我只打印两个语句以尝试识别错误的来源).

我希望这很清楚.

我正在使用scrapy和selenium

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()
Run Code Online (Sandbox Code Playgroud)

Nim*_*ush 20

基于Python Doc,httplib.BadStatusLine如果服务器使用我们不理解的HTTP状态代码进行响应,则会引发此问题.您可以尝试传递此异常.如果您打算拨打多个网址,则不应关闭您的驱动程序.

试试这个:

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
Run Code Online (Sandbox Code Playgroud)