Re: Design for HTTP client form login and scraping

Jean-Paul Calderone <[email protected]>
Newsgroups gmane.comp.python.twisted.web
Message-ID <20090727142245.388.653301263.divmod.quotient.781@henry.divmod.com>
On Mon, 27 Jul 2009 09:07:49 -0500, David Bern <[email protected]> wrote:
>On Mon, Jul 27, 2009 at 8:01 AM, Jean-Paul Calderone<[email protected]> wrote:
>> On Mon, 27 Jul 2009 01:05:21 -0500, David Bern <[email protected]> wrote:
>>>I want to make multiple HTTP requests using the same set of cookies.
>>>Should I call client.getPage a lot thus creating multiple factories to
>>>do this?
>>
>> This is probably the right approach for the near term.  If you're worried
>> about the overhead of creating a lot of factories, I don't think you should.
>> Creating these objects isn't very expensive (particularly compared to parsing
>> html).
>>
>> Jean-Paul
>>
>> _______________________________________________
>> Twisted-web mailing list
>> [email protected]
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>>
>
>Thank you for the fast reply. I am more worried about the difficulty
>of programming it this way, and was wondering if there is a better
>method. I want a class with functions which would correspond to
>different forms and pages on the web site. For instance, login(), then
>post_message(), or some such set of commands based on a configuration
>file. Would creating a class which calls client.getPage without
>inheriting anything be the best method to accomplish this?

That's probably what I'd do.  There's not much to be gained by subclassing
anything from twisted.web.client in this case.  I would reserve that for
cases where I wanted to change the behavior of something at the HTTP level,
for example providing different behavior for handling redirects.

>When would
>inheritance be the right method, only when extending the functionality
>of HTTP client in Twisted and not to make use of it? My main question
>here is that of style and ease of programming. I want to get into a
>good programming habit with Twisted rather than have to redesign and
>rewrite huge portions later because I put the logic in the wrong
>place.
>

I'm coming to think that a good rule of thumb is not to subclass things
unless you really need to.  There are probably some exceptions - for
example, I'll probably keep subclassing twisted.internet.protocol.Protocol
for a while to come, but my list of such exceptions is pretty short right
now.

I find subclassing to mainly cause problems - mostly to do with backwards
compatibility - and not offer sufficient benefits to outweigh these.

Jean-Paul

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.