سؤال

أحاول إلغاء بعض البيانات من موقع ويب. البرامج النصية التي أحاول أن أكتبها ، يجب أن تحصل على محتوى الصفحة:

http://www.atpworldtour.com/Rankings/Singles.aspx

يجب محاكاة المستخدم الذي يذهب إلى كل خيار للحصول على ترتيب إضافي والتواريخ ومحاكاة النقر فوق GO ثم بعد جلب البيانات يجب أن تستخدم وظيفة الخلفية.

في الوقت الحالي ، كنت أحاول فقط تحديد هذا الخيار للوقوف الإضافي:

            <option value="101" >101-200</option>

هذه هي محاولتي (الفقيرة) لمحاولة القيام بذلك:

from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import re
import urllib2



br = Browser();
br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
br.select_form(nr=0);
br["r"] = "101";

response = br.submit();

ومع ذلك ، فإنه يفشل فقط على Select_form (nr = 0) والذي يجب أن يحدد النموذج الأول.

هذا هو السجل الذي تم إرجاعه بواسطة Python:

>>> from mechanize import Browser
>>>
>>> from BeautifulSoup import BeautifulSoup
>>> import re
>>> import urllib2
>>>
>>>
>>>
>>> br = Browser();
>>> br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
<response_seek_wrapper at 0x311bb48L whose wrapped object = <closeable_response
at 0x311be88L whose fp = <socket._fileobject object at 0x0000000002C94408>>>
>>> br.select_form(nr=0);
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build\bdist.win-amd64\egg\mechanize\_mechanize.py", line 505, in select_
form
  File "build\bdist.win-amd64\egg\mechanize\_html.py", line 546, in __getattr__
  File "build\bdist.win-amd64\egg\mechanize\_html.py", line 559, in forms
  File "build\bdist.win-amd64\egg\mechanize\_html.py", line 228, in forms
mechanize._html.ParseError

لم أتمكن من العثور على شرح مناسب لجميع الوظائف في الصفحة الرئيسية ميكانيكية. هل يمكن لأي شخص أن يوجهني إلى برنامج تعليمي مناسب لاستخدام النماذج وميكانيكي أو مساعدتي في هذه المشكلة بالذات؟

أنتوني

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

المحلول

أعتقد أنك تستخدم المكتبة بشكل صحيح ، ولكن يبدو أن المحلل قد واجه مشكلة مع تلك الصفحة بالذات. أنا أستخدم المكتبة بنفس الطريقة على صفحة أخرى ("http://flashcardd.com/login") ولا يرفع خطأ.

نصائح أخرى

لقد واجهت هذه المشكلة نفسها. تم الوصول إلى الصفحة التي كنت أتصل بها إلى التحقق من صحة W3C ، لذلك لم أكن أعتقد أنها كانت مشكلة ترميز. ومع ذلك ، اشتكى HTML TIDY من أن الصفحة لديها ضمن A. بمجرد إصلاح ذلك ، بدأت ميكانيكي العمل.

أيضا ، رأيت رد على هذه المشكلة على قائمة بريدية. أود فقط أن ألاحظ أن إضافة المصنع = meanazy.robustfactory () إلى Mechanize.Browser () لم يغير النتيجة.

دليل: حدد المزيد عن ميكانيكيتك. browser ()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top