首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >httplib.BadStatusLine:'‘

httplib.BadStatusLine:'‘
EN

Stack Overflow用户
提问于 2014-12-23 19:16:13
回答 3查看 39.2K关注 0票数 16

像往常一样,我经常遇到问题,我彻底地寻找了当前问题的答案,但发现自己不知所措。以下是我搜索过的一些地方:- How to fix httplib.BadStatusLine exception? - Python httplib2 Handling Exceptions - python http status code

我的问题如下。我已经创建了一个蜘蛛,并想抓取不同的网址。当我独立抓取每个网址时,一切都很正常。然而,当我尝试抓取两者时,我得到了以下错误:httplib.BadStatusLine: ''

我遵循了我读到的一些建议(参见上面提到的链接),可以打印每个请求的response.status,但是response.url没有打印,并且抛出了错误。(我打印这两条语句只是为了找出错误的根源)。

我希望这一点是清楚的。

我在用scrapy和selenium

代码语言:javascript
复制
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()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-23 20:56:21

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

试试这个:

代码语言:javascript
复制
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
票数 20
EN

Stack Overflow用户

发布于 2017-03-14 08:15:57

我做了一个装饰器来做顶部答案所做的事情,以便使代码易于重用。这就是它:

代码语言:javascript
复制
import http

def pass_bad_status_line_exc(wrapped_function):
    """
    Silently pass this exception `http.client.BadStatusLine` decorator
    """
    def _wrapper(*args, **kwargs):
        try:
            result = wrapped_function(*args, **kwargs)
        except http.client.BadStatusLine:
            return
        return result
    return _wrapper
票数 1
EN

Stack Overflow用户

发布于 2018-04-20 00:00:39

我遇到这个错误是因为我定义了一个selenium.webdriver实例(名为driver),在它上面调用了driver.quit(),然后尝试在退出驱动程序上调用driver.get(url)。解决方案是不调用driver.quit()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27619258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档