كيفية فوق ارتباط يحتوي جافا سكريبت: __ doPostBack في أ href؟

StackOverflow https://stackoverflow.com/questions/1418000

  •  07-07-2019
  •  | 
  •  

سؤال

وأنا أكتب نصي الشاشة مكشطة في بيثون مع وحدة "مكننة" وأود أن استخدام الأسلوب mechanize.click_link () على ارتباط يحتوي جافا سكريبت: __ doPostBack في أ href. وأعتقد أن الصفحة أحاول تحليل هي باستخدام AJAX.

ملحوظة: الميكانيكية هو mechanize.Browser ()

>>> next_link.__class__.__name__
'Link'
>>> next_link
Link(base_url='http://www.citius.mj.pt/Portal/consultas/ConsultasDistribuicao.aspx', url="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')", text='2', tag='a', attrs=[('id', 'ctl00_ContentPlaceHolder1_Pager1_lnkNext'), ('title', 'P\xc3\xa1gina seguinte: 2'), ('href', "javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')")])
>>> req = mech.click_link(next_link)
>>> req
<urllib2.Request instance at 0x025BEE40>
>>> req.has_data()
False

وأود أن استرداد مصدر الصفحة بعد النقر على الرابط.

هل كانت مفيدة؟

المحلول

وأنا لا تستخدم مكننة، ولكن أفعل الكثير من الويب كشط نفسي مع الثعبان.

عندما تصل إلى وظيفة جافا سكريبت مثل __doPostBack، والقيام بما يلي:
يمكنني الوصول إلى موقع على شبكة الإنترنت في فايرفوكس، واستخدام HttpFox تمديد لرؤية معالم وظيفة طلب المتصفح إرسالها إلى خادم الويب عند النقر على الرابط ذي الصلة.
وبعد ذلك بناء على نفس الطلب في بيثون باستخدام urllib.parse.urlencode لبناء سلاسل الاستعلام والبيانات وظيفة أحتاج.
أحيانا يستخدم الموقع الكوكيز كذلك، لذلك أنا مجرد استخدام http.cookiejar بايثون.

ولقد استخدمت هذه التقنية بنجاح عدة مرات.

نصائح أخرى

وأنا لا أعتقد mechanize يدعم الجافا سكريبت. لتتخلص من الصفحات التي تعتمد في جوهرها على تنفيذ جافا سكريبت لوظائفها، قد تحتاج إلى استخدام أداة مختلفة، مثل <وأ href = "http://seleniumhq.org/projects/remote-control/" يختلط = "نوفولو noreferrer" > السيلينيوم RC .

>>> next_link.__class__.__name__
'Link'
>>> next_link
Link(base_url='http://www.citius.mj.pt/Portal/consultas/ConsultasDistribuicao.aspx', url="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')", text='2', tag='a', attrs=[('id', 'ctl00_ContentPlaceHolder1_Pager1_lnkNext'), ('title', 'P\xc3\xa1gina seguinte: 2'), ('href', "javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')")])
>>> req = mech.click_link(next_link)
>>> req
<urllib2.Request instance at 0x025BEE40>
>>> req.has_data()
False
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top