python爬取禅道页面特定的人员所提的bug数,试了很多方法,发现访问的结果都是一致的,怎么解决?
廖荣玄
|
在学习python爬虫,要爬取我们公司所用禅道的特定人员所提bug数。 然后我写了代码,尝试用requests.post带着参数去请求这个唯一的post,发现地址写的为post这个地址时,响应是错误的。 response = session.post('http://zentaopms.jjshebao.com/index.php?m=search&f=buildQuery', data = postData,headers = header) 返回的结果如下 <html><meta charset='utf-8'/><style>body{background:white}</style><script>parent.location=' /index.php?m=bug&f=browse&productID=3&branch=0&browseType=bySearch&queryID=myQueryID'; 这个最后这段地址,是其中一个get页面的地址。 response = session.post('http://zentaopms.jjshebao.com/index.php?m=bug&f=browse&productID=3&branch=0&browseType=bySearch&queryID=myQueryID', data = postData,headers = header) 则会返回结果。 还有一个问题,我现在是要爬取不同人员所提的bug数,那我就给其中一个参数是不一样的。对了每次的结果,发现是其中这个值对应每次的人员不同。
对了。上述提到的,我的入参数据格式都是打错了,用的json格式。后来换成form-data格式后,有提示“http.client.RemoteDisconnected: Remote end closed connection without response”。当然了。post的还是最长的那个网址(本身是get获取到的,也就是actionURL后的那个地址)。代码段如下: #form-data的数据格式 formData1 = 'fieldtitle=&fieldkeywords=&fieldsteps=&fieldassignedTo=&fieldresolvedBy=&fieldstatus=&fieldconfirmed=ZERO&fieldproduct=2&fieldplan=&fieldmodule=ZERO&fieldproject=&fieldseverity=0&fieldpri=0&fieldtype=&fieldos=&fieldbrowser=&fieldresolution=&fieldactivatedCount=&fieldtoTask=&fieldtoStory=&fieldopenedBy=&fieldclosedBy=&fieldlastEditedBy=&fieldmailto=&fieldopenedBuild=&fieldresolvedBuild=&fieldopenedDate=&fieldassignedDate=&fieldresolvedDate=&fieldclosedDate=&fieldlastEditedDate=&fielddeadline=&fieldid=&andOr1=AND&field1=openedBy&operator1=%3D&value1=liaorongxuan&andOr2=and&field2=id&operator2=%3D&value2=&andOr3=and&field3=keywords&operator3=include&value3=&groupAndOr=and&andOr4=AND&field4=steps&operator4=include&value4=&andOr5=and&field5=assignedTo&operator5=%3D&value5=&andOr6=and&field6=resolvedBy&operator6=%3D&value6=&module=bug&actionURL=%2Findex.php%3Fm%3Dbug%26f%3Dbrowse%26productID%3D2%26branch%3D0%26browseType%3DbySearch%26queryID%3DmyQueryID&groupItems=3&formType=lite' #创建session session = requests.session() #调用post进行请求,添加参数以及信息头 response1 = session.post("http://zentaopms.jjshebao.com/index.php?m=bug&f=browse&productID=2&branch=0&browseType=bySearch&queryID=myQueryID", data=formData1, headers=header) 如果是直接get,不给参数,则是会有错误提示。看样子,好像是提示未登录的情况?最后referer后边的值,是一串加密后的码。 <html><meta charset='utf-8'/><style>body{background:white}</style><script>self.location='/index.php?m=user&f=login&referer=XXXXXXXX'; 然后我试了一下,只要访问的时候,不论是requests.post还是get;或者是session.post或get,到最后返回的结果都是一模一样的,还是我在页面操作时,搜索了谁提的bug,我运行脚本后,最后得出的结果就是谁所提的bug数。 最后提一点,刚刚仔细看了眼信息头,发现了访问的一些规律 所以我现在也很懵,在写脚本的时候,到底要访问哪个地址? 访问那个post的地址吧,返回的又是错误的(上方有提到),访问get吧,那这个post要怎么去调用它,使它能够获得正确的数据呢,不然直接得到的数据,都是一致的。 |
禅道-Bee |
方便的话,图片可以重新上传下吗?
|
廖荣玄
|
原帖由
禅道-Bee 于
2020-09-18 17:16:27 发表
方便的话,图片可以重新上传下吗? 好的。 那我是需要重新开一个帖子么? 现在图片是看不到么? |
张玉洁
|
目前访问时图片无法正常显示(如下图所示),方便的话可以登录官网后,重新编辑这个帖子上传一下图片。 如果找不到帖子编辑按钮,可以添加网页上方QQ,我们给您发送截图看一下具体位置。
|
廖荣玄
|
原帖由
张玉洁 于
2020-09-23 17:29:25 发表
目前访问时图片无法正常显示(如下图所示),方便的话可以登录官网后,重新编辑这个帖子上传一下图片。 如果找不到帖子编辑按钮,可以添加网页上方QQ,我们给您发送截图看一下具体位置。
您好,帮忙看一下,现在的描述可以了嘛。 我重新截图进来了 |
廖荣玄
|
现在求助一下。 我重新写了登录的请求,登录成功后获取到session,再用session.post去访问网站,每次的结果都一样。 而且这次不会随着页面那边的操作而改变,就是每次都是第一次访问的那个结果。
|
石洋洋 |
1、搜索的请求是依赖session数据的,当前状态模拟post需要确认一下session值是否设置上了,如果没有设置上返回的结果都是一样的。 2、关于禅道需要登录才能访问的问题可以参考:https://www.zentao.net/book/zentaopmshelp/344.html 3、禅道中可以搜索后保存搜索条件为菜单,下次直接点击菜单就可以快速搜索,另外禅道收费版本也可以直接写sql查询相应的数据并且保存成报表,需要可以联系本网页最上方的QQ或者电话。 4、python这块我们没有用过不太熟悉,可能帮不太上什么忙,需要您再研究一下了。 |