python中urllib+cookielib包操作

2024-10-03 23:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,这个项目将访问一个特定的站点进行搜索,然后我将过滤并返回值;程序登录然后运行搜索,并用cookiejar保存cookie,以便在运行搜索时验证连接。但是,当我运行这个程序时,它没有返回任何结果,而且包头看起来完全不同。我做错了什么,搜索总是没有结果。在

这是我的代码:

import cookielib, urllib, urllib2

file= open('results.txt', 'wb')

cj=cookielib.CookieJar()

opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

opener.addheaders=[('Referer', 'http:// site that runs the search/psc/p01ps1/EMPLOYEE/CRM/c/BANNER_TAP.SRCH_ATDO_TAP.GBL')]

opener.addheaders=[('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0')]

posts={'timezoneOffset':'180', 'userid':'user', 'pwd':'password', 'Submit':'Signon'}

data = urllib.urlencode(posts)

opens=opener.open('loginpage.com', data)

print cj

file.write(opens.read())

cjs=str(cj)

posts2 = urllib.urlencode({'ICType':'Panel', 'ICElementNum':0, 'ICStateNum':1, 'ICAction':'SRCH_ATD_TAP_WK_SRCH_PB', 'ICXPos':0, 'ICYPos':0, 'ICFocus':'', 'ICChanged':1, 'ICResubmit':0, 'ICFind':'', 'SRCH_ATD_TAP_WK_MSISDN_TAP':'', 'SRCH_ATD_TAP_WK_CNPJ_TAP':'', 'SRCH_ATD_TAP_WK_STATUS_RA_TAP':'', 'SRCH_ATD_TAP_WK_INTERACTION_ID':'', 'SRCH_ATD_TAP_WK_CASE_ID':48373914, 'SRCH_ATD_TAP_WK_PROTOCOLO_TAP':'', 'SRCH_ATD_TAP_WK_DATA_INI_BAN_TAP':'', 'SRCH_ATD_TAP_WK_HORA_INI_RA_TAP':'', 'SRCH_ATD_TAP_WK_DATA_FIM_BAN_TAP':'', 'SRCH_ATD_TAP_WK_HORA_FIM_BAN_TAP':'', 'SRCH_ATD_TAP_WK_MOTIVO_ID1_TAP':0, 'SRCH_ATD_TAP_WK_MOTIVO_ID2_TAP':0, 'SRCH_ATD_TAP_WK_MOTIVO_ID3_TAP':0, 'SRCH_ATD_TAP_WK_MOTIVO_ID4_TAP':0, 'SRCH_ATD_TAP_WK_MOTIVO_ID5_TAP':0, 'SRCH_ATD_TAP_WK_COMPANY_TYPE_TAP':'','SRCH_ATD_TAP_WK_SUBTIPO_CLI_TAP':''})

url2='searchpage.com'

opens2 = opener.open(url2, posts2) 

str=opens2.read()

print cj

file.write(str + cjs)

file.close()

它第一次连接到登录页面以保存cookie,然后连接到搜索页面。这只是一个非常具体的网站连接,所以这是非常具体的。在

同样,这段代码不返回任何结果(在搜索str var之后,它是整个未过滤的站点)。在

以下是我用wireshark扫描请求时得到的结果,第一个是在firefox中运行的站点在普通浏览器中进行搜索(包括发送的post数据),第二个是我的程序在运行并自动搜索我。在

^{pr2}$

在 (这是我工作的公司的个人使用,目的是使这项工作更简单,此时需要手动完成大约500次。这是一个注册协议的站点,我们需要搜索协议来检查(稍后将从excel导入一个列表)协议是否关闭

注意,我没有额外的标题,但如果这可以解决问题,我可以。由于某些原因,我的post数据变得杂乱无章(但从我对post数据的理解来看,这不应该有什么不同),cookie信息也有一些倒退,但这也不重要,因为检索cookie信息的处理方式与python字典非常相似。在

所以在过去的两个星期里,我一直在为这个小代码绞尽脑汁,重写了好几次,但还是无法让它返回搜索结果。 另外需要注意的是,我不能安装浏览器内核来执行javascript,但我也不认为有必要这样做,因为在firefox上搜索的结果显示在wireshark中,所以网站是与结果一起下载的。我能使机械化运行,但我还没能尝试。如果有一种方法可以用python自动化firefox(我现在不记得是哪个版本),那是一个我愿意接受的选择。 还有一件事,因为我正在做这个项目,我不能使用和python插件,必须安装。我得到了机械化的工作,因为我打开并复制了文件,没有运行设置.py. 所以为了方便起见,我没有办法安装库。在


Tags: 项目代码程序站点cookieatdtapopener
1条回答
网友
1楼 · 发布于 2024-10-03 23:22:35

您的cookie中没有设置PS_360。不知道这有多重要,但解决这些问题的最佳策略是逐步获得相同的请求。可能第一个获取cookie集的请求已经不同了,或者您的浏览器中有来自以前请求的cookie数据,您需要为您的请求手动创建这些数据。在

相关问题 更多 >