免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6864 | 回复: 20
打印 上一主题 下一主题

post的网页,想return第二页的信息怎么弄? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-30 10:44 |只看该作者 |倒序浏览
这个网址,进去后就点第一个块版‘法律’
这是个post的网页,请各位高手,教我一下,怎么样翻回第二页的信息?
http://vip.chinalawinfo.com/Newlaw2002/chl/index.asp

下面是我前段时间网上帮助我的朋友给我的代码,不知道怎么样应用于这个网址。
  1. #coding=utf-8

  2. import urllib
  3. import urllib2
  4. import httplib
  5. import cookielib

  6. class loginPageGeter:
  7.    
  8.     httpcookie = ''

  9.     #构造函数
  10.     def __init__(self):
  11.         cookie = cookielib.CookieJar()
  12.         self.httpcookie = urllib2.HTTPCookieProcessor(cookie)
  13.    
  14.     #登录函数
  15.     def login(self, url, params):
  16.         try:
  17.             params = urllib.urlencode(params)
  18.             req = urllib2.Request(url, params)
  19.             opener = urllib2.build_opener(self.httpcookie)
  20.             fp = opener.open(req)
  21.             return fp.read()
  22.         except:
  23.             return False
  24.    
  25.     #post数据
  26.     def post(self, url, params):
  27.         try:
  28.             params = urllib.urlencode(params)
  29.             req = urllib2.Request(url, params)
  30.             opener = urllib2.build_opener(self.httpcookie)
  31.             fp = opener.open(req)
  32.             return fp.read()
  33.         except:
  34.             return False

  35. if __name__=='__main__':
  36.     loginObj = loginPageGeter()

  37.     #登录
  38.     print '正在登录...'.decode('utf-8')
  39.     url = 'http://xuxb.v2.local/member/login.php'
  40.     params = {'username':'test01', 'password':'test', 'act':'login'}
  41.     loginObj.login(url, params)
  42.    
  43.     #给用户发10条消息
  44.     for i in range(1, 11):
  45.         print ('%s\t正在发送消息...' % i).decode('utf-8')
  46.         url = 'http://xuxb.v2.local/member/send_message.php'
  47.         params = {'friendId':'1790251', 'message':'机器自动发送', 'act':'add'}
  48.         loginObj.post(url, params)
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-05-30 13:59 |只看该作者
和get一样,post也会得到响应内容的
  1.             params = urllib.urlencode(params)
  2.             req = urllib2.Request(url, params)
  3.             opener = urllib2.build_opener(self.httpcookie)
  4.             fp = opener.open(req)
  5.             print fp.read()
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-05-31 15:53 |只看该作者
不懂啊,哪位能帮我看看我的实际例子,教我下参数怎么填进去?

另外再帮我推荐一本对 采集有帮助的 书,我也不知道看什么书好。

论坛徽章:
0
4 [报告]
发表于 2010-05-31 16:41 |只看该作者
本帖最后由 t6760915 于 2010-05-31 16:44 编辑
  1. #coding=utf-8

  2. import urllib
  3. import urllib2
  4. import httplib
  5. import cookielib

  6. class poster:
  7.    
  8.     httpcookie = ''

  9.     #构造函数
  10.     def __init__(self):
  11.         cookie = cookielib.CookieJar()
  12.         self.httpcookie = urllib2.HTTPCookieProcessor(cookie)
  13.    
  14.     #post数据
  15.     def doPost(self, url, params):
  16.         try:
  17.             params = urllib.urlencode(params)
  18.             req = urllib2.Request(url, params)
  19.             opener = urllib2.build_opener(self.httpcookie)
  20.             fp = opener.open(req)
  21.             return fp.read()
  22.         except:
  23.             return False

  24.     #析构函数
  25.     def __del__(self):
  26.         self.httpcookie = ''

  27. if __name__=='__main__':
  28.     pObj = poster()
  29.    
  30.     url = 'http://vip.chinalawinfo.com/Newlaw2002/chl/result.asp'
  31.     params = {'PreSearchWhere':'效力级别=%#XA01%', 'ResultID':'1', 'CurrentPage':'5', 'AllPageCount':'30', 'Page':'5', 'PageSize':'40', 'orderby':'2', 'jd':'', 'RdIsSHowMess':'', 'RdIsSHow':''}
  32.    
  33.     newparams = {}
  34.     for key,val in params.items():
  35.         key = key.decode('utf-8', 'ignore').encode('gbk', 'ignore')
  36.         val = val.decode('utf-8', 'ignore').encode('gbk', 'ignore')
  37.         newparams[key] = val

  38.     html = pObj.doPost(url, newparams)

  39.     fp = open('a.html', 'w')
  40.     fp.write(html)
  41.     fp.close()
复制代码
我就晕了,那代码是我给你的.

我稍微改了下抓取的页面截图是这样的...

他的页次是page,我抓的第5页所以就写的5,你可以循环抓,这个变量不断变化就可以了

论坛徽章:
0
5 [报告]
发表于 2010-05-31 17:08 |只看该作者
可不可以回去看看http协议再出来问问题?什么都不懂  整天问些工作上的问题,你给不给钱啊?

论坛徽章:
0
6 [报告]
发表于 2010-05-31 17:15 |只看该作者
可不可以回去看看http协议再出来问问题?什么都不懂  整天问些工作上的问题,你给不给钱啊?
luffy.deng 发表于 2010-05-31 17:08



    我水平有限,恩,是想看看http协议不知道有没有这方面的好书,是工作上的事情,都比较急,一时没到这水平。
钱嘛,可以给,小问题一百块一个,大问题付不起。

最后我不好意思各位,麻烦了,希望大家抱着 教是最好的学 的心态或者助人为乐,来帮帮我,其实我愿意学,并不怎么懒,一时没方法。

论坛徽章:
0
7 [报告]
发表于 2010-05-31 17:15 |只看该作者
本帖最后由 wqjwftcaqr 于 2010-05-31 17:32 编辑
我就晕了,那代码是我给你的.

我稍微改了下抓取的页面截图是这样的...

他的页次是page,我抓的第5页所以 ...
t6760915 发表于 2010-05-31 16:41



    万分感谢,请为我的工作需要推荐一本书吧?(采集各种网站信息)

论坛徽章:
0
8 [报告]
发表于 2010-05-31 21:23 |只看该作者
  1. 熟悉urllib,os,sys这些模块就可以了,好象还真没有这方面的书
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-05-31 21:39 |只看该作者
从你第一次问这样的问题 就建议你看一下http协议,找个工具看下header。网上http协议 资料一大把,firebug这样的工具更是一大堆。如果你肯拿出一个周的时间研究一下http协议,不可能到现在还搞不清楚什么是post提交。如果你曾经试图研究一下别人给你的代码,对与下面这个post数据怎么也得猜个八九不离十吧?
PreSearchWhere=%D0%A7%C1%A6%BC%B6%B1%F0%3D%25%23XC02%25&ResultID=1&CurrentPage=1&AllPageCount=144&Page=3&PageSize=40&orderby=2&jd=&RdIsSHowMess=&RdIsSHow=
说实话这样的问题跟python就没什么关系,只是python有个urllib2库用着方便而已。

论坛徽章:
0
10 [报告]
发表于 2010-05-31 23:57 |只看该作者
其实如果不涉及cookie的话,post直接用urllib就能搞定了吧……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP