Python 2.7 Python,Mechanize |存在注销问题

Python 2.7 Python,Mechanize |存在注销问题,python-2.7,mechanize,Python 2.7,Mechanize,我正在学习python并使用mechanize运行我的第一个scraper 目标:登录网站,导航到URL列表并返回一段文本,然后将其写入CSV 我使用的代码非常好,但是当我运行列表时,我遇到了一些问题,在10-15行之后,整个html页面会返回,而不是那块文本。一旦错误发生,它将无法正常工作,直到我再次运行该操作,但在10-15后再次遇到障碍 在查看html后,它看起来好像我正在注销,不知道为什么。URL都是合法的,如果我为所有链接单独测试getNum,它似乎工作正常 最后一件事-该网站需要Ja

我正在学习python并使用mechanize运行我的第一个scraper

目标:登录网站,导航到URL列表并返回一段文本,然后将其写入CSV

我使用的代码非常好,但是当我运行列表时,我遇到了一些问题,在10-15行之后,整个html页面会返回,而不是那块文本。一旦错误发生,它将无法正常工作,直到我再次运行该操作,但在10-15后再次遇到障碍

在查看html后,它看起来好像我正在注销,不知道为什么。URL都是合法的,如果我为所有链接单独测试getNum,它似乎工作正常

最后一件事-该网站需要Javascript和cookies才能登录

下面是函数的外观

def get_Num(link): #takes in a URL, provided by the csv and finds the chunk of text I'm looking for
    import urllib2
    import cookielib
    import urllib
    import requests
    import mechanize

    # Browser
    br = mechanize.Browser()

    # Cookie Jar
    cj = cookielib.LWPCookieJar()
    br.set_cookiejar(cj)

    # Browser options
    br.set_handle_equiv(True)
    br.set_handle_gzip(True)
    br.set_handle_redirect(True)
    br.set_handle_refresh(False)  
    br.set_handle_referer(True)
    br.set_handle_robots(False)

    # Follows refresh 0 but not hangs on refresh > 0
    br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

    # User-Agent (this is cheating, ok?)
    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')]

    # The site we will navigate into, handling it's session
    br.open('https://www.website.com/login')

    #select the first form
    br.select_form(nr=0)

    #user credentials
    br['session_key'] = login
    br['session_password'] = pw

    # Login
    br.submit()
    print 'logged in'

    #open link
    br.open(link)
    html = br.response().read()
    position1 = html.find('text')
    position2 = html.find('>',position1)
    targetNumber = html[position1:position2]
    return targetNumber


def get_Info(inputFile,outputFile): # takes a CSV and runs getNum for ever url and then writes the whole thing to a csv
    import urllib2
    import re
    import csv

    with open(inputFile, "rb") as csvinput:
        with open(outputFile, 'w+') as csvoutput:
            reader = csv.reader(csvinput)
            writer = csv.writer(csvoutput)
            for rowNum, line in enumerate(reader):
                vv = getNum(str(line[1]))
                line.append(vv)

仅供参考-您不需要用open语句嵌套您的
。您可以这样做:
将open(inputFile,“rb”)作为csvinput,将open(outputFile,'w+')作为csvoutput:
放在一行上。谢谢,我会把它清理干净的