how to move on to next url if current one is a dud

A

Adam Akhtar

hmm wasnt too sure how to make the subject both concise and
understandable at the same time so my apologies if i was vague.

I searched under "ignore missing" but didnt come up wiht anything.
Perhaps someone can help me.

Im using open-uri to fetch the html from various ebay webpages.
Basically the results for certain categories. I have all the relevant
urls tucked into an array of hashes eg. Computers =>
www.ebay.blah.blah.blah

I then cycle through the array feeding open uri the urls and doing my
biz on the html one by one.

However sometimes there are no products for a certain category for that
given day (im focussing on products located in japan so the number of
results is drastically reduced) so when open uri complains like this

ebay.rb:71:in `read': No such file or directory -
http://research.ebay.co.uk/ws/
search/GetSaleAnalysis?sojs=0&salic=104&sacqyop=9&sacqy=1000&sacat=13851&ftrv=17
&fis=2&fts=-1&fn=4&frts=0&sc=AvgSoldPrice&showdiag=0&soexpand=1&soraw=0
(Errno::
ENOENT)

Im fine with it complaining but it stops the programme. How do i make it
simply skip/ignore such urls and move on to the next one in the hash?

any help greatly appreciated.
 
S

Stefano Crocco

hmm wasnt too sure how to make the subject both concise and
understandable at the same time so my apologies if i was vague.

I searched under "ignore missing" but didnt come up wiht anything.
Perhaps someone can help me.

Im using open-uri to fetch the html from various ebay webpages.
Basically the results for certain categories. I have all the relevant
urls tucked into an array of hashes eg. Computers =>
www.ebay.blah.blah.blah

I then cycle through the array feeding open uri the urls and doing my
biz on the html one by one.

However sometimes there are no products for a certain category for that
given day (im focussing on products located in japan so the number of
results is drastically reduced) so when open uri complains like this

ebay.rb:71:in `read': No such file or directory -
http://research.ebay.co.uk/ws/
search/GetSaleAnalysis?sojs=0&salic=104&sacqyop=9&sacqy=1000&sacat=13851&ft
rv=17
&fis=2&fts=-1&fn=4&frts=0&sc=AvgSoldPrice&showdiag=0&soexpand=1&soraw=0
(Errno::
ENOENT)

Im fine with it complaining but it stops the programme. How do i make it
simply skip/ignore such urls and move on to the next one in the hash?

any help greatly appreciated.

Wrapping the call to open in a begin/rescue pair should do what you want:

begin open( url )
rescue SystemCallError
end

I hope this helps

Stefano
 
R

Rob Biedenharn

Wrapping the call to open in a begin/rescue pair should do what you
want:

begin open( url )
rescue SystemCallError
end

I hope this helps

Stefano


You might want to rescue just Errno::ENOENT.

I often do:

rescue Timeout::Error, OpenURI::HTTPError, Errno::ENOENT

for this kind of thing.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,787
Messages
2,569,627
Members
45,329
Latest member
InezZ76898

Latest Threads

Top