繼上次通過phantomjs獲取動(dòng)態(tài)cookie后需要對(duì)同一網(wǎng)站搭建一個(gè)查詢的接口,對(duì)于這種情況繼續(xù)使用scrapy是肯定不現(xiàn)實(shí)的了,于是采用了urllib加上cookiejar的方式來(lái)進(jìn)行實(shí)時(shí)查詢接口的編寫。
開始打算直接把動(dòng)態(tài)生成的cookie直接帶在header里面進(jìn)行發(fā)送算色,但是由于本身傳回cookie的存在,直接重寫head會(huì)導(dǎo)致cookie不完整。于是采用在cookiejar中直接添加cookie字段,cookiejar的cookie添加十分繁瑣导俘,上代碼
def getSession(e):
print 'getSession'
js = e.read()
js = str(js).replace("<script>", '')
js = js.replace("</script>", '')
js = js.replace("document.cookie=dc", 'console.log(dc);phantom.exit()')
f = open('getcookie.js', "w+")
f.write(js)
f.close()
status, output = commands.getstatusoutput('phantomjs getcookie.js')
cookiejar.set_cookie(make_cookie('__jsl_clearance', output.split(";")[0].split('=')[1]))
make_cookie函數(shù)的具體實(shí)現(xiàn)
def make_cookie(name, value):
return cookielib.Cookie(
version=0,
name=name,
value=value,
port=None,
port_specified=False,
domain="court.gov.cn",
domain_specified=True,
domain_initial_dot=False,
path="/",
path_specified=True,
secure=False,
expires=None,
discard=False,
comment=None,
comment_url=None,
rest=None
)
通過以上代碼實(shí)現(xiàn)cookiejar的cookie的添加峦耘,直接通過字典添加cookie是不行的,cookiejar 中的cookie是以一個(gè)Cookie類型存在的旅薄,需要調(diào)用Cookie的構(gòu)造函數(shù)生成的對(duì)應(yīng)類型進(jìn)行添加辅髓。
個(gè)人對(duì)于cookiejar不提供方便的添加cookie的方法表示非常不理解,不過管他呢少梁,這里記一筆洛口,以后注意