鱼C论坛

 找回密码
 立即注册
查看: 910|回复: 7

关于爬虫,js点击提交的问题

[复制链接]
发表于 2018-11-30 08:23:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
需要爬取得数据在:  点击提交后,返回的一个表框当中(提交前和返回的页面,他们链接不同,但都是指向提交前的页面)。 那这个提交和返回的过程是怎么样的啊,我要爬数据,应该怎么做呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-30 08:47:13 | 显示全部楼层
有人吗,有人吗,自己顶下先
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 10:08:55 From FishC Mobile | 显示全部楼层
你说的应该是post吧,一样会有像get请求会有响应给你的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 11:15:46 | 显示全部楼层
wongyusing 发表于 2018-11-30 10:08
你说的应该是post吧,一样会有像get请求会有响应给你的

对,就是post请求 。 他需要的cookie、参数我都给他了,但是发送post后,还是得到不到想要的页面。
这个网址:'http://219.135.157.143/gdyj/sjwz/yp/ypjyqyLsydList.faces' ,数据在页面上的一条条链接里面  
老哥帮我看下咯
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 11:50:26 | 显示全部楼层
本帖最后由 wongyusing 于 2018-11-30 11:53 编辑

你post完的页面就是你想要的数据啦

就在script里面

然后再根据需要的参数再post到同一个链接。
参数大概如下:
  1. sjwzYpLsydForm:total: 460
  2. sjwzYpLsydForm:row: 10
  3. sjwzYpLsydForm:page: 1
  4. sjwzYpLsydForm:totalPage: 46
  5. sjwzYpLsydForm:oldRow: 10
  6. sjwzYpLsydForm:select_id:
  7. sjwzYpLsydForm:qymc:
  8. sjwzYpLsydForm:xkzh:
  9. sjwzYpLsydForm:qyfzr:
  10. sjwzYpLsydForm:zcdz:
  11. sjwzYpLsydForm:sjwzYpLsydBean:inputPage: 1
  12. sjwzYpLsydForm_SUBMIT: 1
  13. sjwzYpLsydForm:_link_hidden_:
  14. detailId: WWSJSB201612210111293854224WWSJSB201612210111294274225
  15. sjwzYpLsydForm:_idcl: sjwzYpLsydForm:sjwzYpLsydBean:2:lookLink11
  16. javax.faces.ViewState: rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAN0AAhfaWQ0Nzc1MXB0ACIvZ2R5ai9zand6L3lwL3lwanlxeUxzeWRMaXN0LnhodG1s
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 12:43:36 | 显示全部楼层
wongyusing 发表于 2018-11-30 11:50
你post完的页面就是你想要的数据啦

就在script里面

为什么我post后,看到的还是之前的页面啊(难道是看错了,我这个ip好像被延时了,暂时看不了哦),我把我代码贴上来吧,你帮我看看是不是哪儿错了
  1. import requests,re
  2. from lxml import etree

  3. url = 'http://219.135.157.143/gdyj/sjwz/yp/ypjyqyLsydList.faces'
  4. headers = {
  5.                 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
  6.                 'Connection': 'keep-alive',
  7.                 'Host': '219.135.157.143',
  8.                 'Origin': 'http://219.135.157.143',
  9.                 'Referer': 'http://219.135.157.143/gdyj/sjwz/yp/sjwzYpScqyList.faces',
  10.                 'Content-Type': 'application/x-www-form-urlencoded',
  11.         }

  12. s = requests.session()
  13. r = s.get(url=url,headers=headers)
  14. cookie_params = r.headers['Set-Cookie'].split(';')[0]
  15. headers['Cookie'] = cookie_params
  16. new_url = url + ';' + cookie_params

  17. #解析
  18. html = etree.HTML(r.content)
  19. hidden_value_params = html.xpath('//form//input[@type="hidden"]//@value')
  20. javax = hidden_value_params[-1]
  21. data = {
  22.         'sjwzYpScqyListForm:total': 571,
  23.         'sjwzYpScqyListForm:row': 10,
  24.         'sjwzYpScqyListForm:page': 1,
  25.         'sjwzYpScqyListForm:totalPage': 58,
  26.         'sjwzYpScqyListForm:oldRow': 10,
  27.         'sjwzYpScqyListForm:select_id':'',
  28.         'sjwzYpScqyListForm:qymc': '',
  29.         'sjwzYpScqyListForm:zcdz': '',
  30.         'sjwzYpScqyListForm:fddbr': '',
  31.         'sjwzYpScqyListForm:qyfzr': '',
  32.         'sjwzYpScqyListForm:scdzjfw': '',
  33.         'sjwzYpScqyListForm:xkzbh': '',
  34.         'sjwzYpScqyListForm:_id16': '',
  35.         'sjwzYpScqyListForm:_id18': '',
  36.         'sjwzYpScqyListForm:_id20': '',
  37.         'sjwzYpScqyListForm:_id22': '',
  38.         'sjwzYpScqyListForm:sjwzYpScqyBean:inputPage': 1,
  39.         'sjwzYpScqyListForm_SUBMIT': 1,
  40.         'detailId': '497BE74C44E1ADD8E040007F01000A2B20080328161602',
  41.         'sjwzYpScqyListForm:_link_hidden_': '',
  42.         'sjwzYpScqyListForm:_idcl': 'sjwzYpScqyListForm:sjwzYpScqyBean:0:pzzsLink',
  43.         'javax.faces.ViewState': javax,
  44. }
  45. print(data)
  46. print(headers)
  47. # 带上数据post请求
  48. # 不过这里 post完之后,返回的页面仍旧是之前的页面 ,得不到像浏览器看到数据页面
  49. q = s.post(url=new_url,headers=headers,data=data)
  50. print(q.url)

  51. print(q.status_code)

  52. # 分析源码 ,结果这个源码就是未提交之前的页面
  53. with open(r'C:\Users\GJ005\Desktop\xxx.txt','w',encoding='utf-8') as f:
  54.         f.write(q.text)
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 17:04:39 | 显示全部楼层
wongyusing 发表于 2018-11-30 11:50
你post完的页面就是你想要的数据啦

就在script里面

刚才又对比了下浏览器post的请求头,和我伪造的请求头,除了 Accept-language ,其他的没区别啊,data我都带了。 发过去后,返回的页面还是 一样的,并不是我要的数据页面。难道只能用 selenium ? 模拟点击获取页面数据吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 19:31:06 | 显示全部楼层
cupbbboom 发表于 2018-11-30 17:04
刚才又对比了下浏览器post的请求头,和我伪造的请求头,除了 Accept-language ,其他的没区别啊,data我都 ...

打不开网站,无能为力。  
服务器的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-22 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表