1

I am connected to the web via VPN and I would like to connect to news site to grab, well, news. For this a library exists: finNews. And this is the code:

import FinNews as fn

cnbc_feed = fn.CNBC(topics=['finance', 'earnings'])
print(cnbc_feed.get_news())
print(cnbc_feed.possible_topics())

Now because of the VPN the connection wont work and it throws:

<urlopen error [WinError 10061] No connection could be made because the target machine actively refused it ( client - server )

So I started separately to understand how to make a connection work and it does work (return is "connected"):

import urllib.request

proxy = "http://user:pw@proxy:port"

proxies = {"http":"http://%s" % proxy}
url = "http://www.google.com/search?q=test"
headers={'User-agent' : 'Mozilla/5.0'}

try:
    proxy_support = urllib.request.ProxyHandler(proxies)
    opener = urllib.request.build_opener(proxy_support, urllib.request.HTTPHandler(debuglevel=1))
    urllib.request.install_opener(opener)

    req = urllib.request.Request(url, None, headers)
    html = urllib.request.urlopen(req).read()
    #print (html)
    print ("Connected")
    
except (HTTPError, URLError) as err:
    print("No internet connection.")

Now I figured how to access news and how to make a connection via VPN, but I cant bring both together. I want to grab the news via the library through VPN?! I am fairly new to Python so I guess I dont get the logic fully yet.

EDIT: I tried to combine with Feedparser, based on furas hint:

import urllib.request
import feedparser

proxy = "http://user:pw@proxy:port"

proxies = {"http":"http://%s" % proxy}
#url = "http://www.google.com/search?q=test"
#url = "http://www.reddit.com/r/python/.rss"
url = "https://timesofindia.indiatimes.com/rssfeedstopstories.cms"
headers={'User-agent' : 'Mozilla/5.0'}

try:
    proxy_support = urllib.request.ProxyHandler(proxies)
    opener = urllib.request.build_opener(proxy_support, urllib.request.HTTPHandler(debuglevel=1))
    urllib.request.install_opener(opener)

    req = urllib.request.Request(url, None, headers)
    html = urllib.request.urlopen(req).read()
    #print (html)
    #print ("Connected")
    feed = feedparser.parse(html)
    #print (feed['feed']['link'])
    print ("Number of RSS posts :", len(feed.entries))
    entry = feed.entries[1]
    print ("Post Title :",entry.title)
    
except (HTTPError, URLError) as err:
    print("No internet connection.")

But same error....this is a big nut to crack... May I ask for your advice? Thank you :)

user3659470
  • 11
  • 1
  • 3
  • I think every system should have function to set proxy for all connections in system And then python code should also send all using proxy - without any extra settings. Eventually you could dig in FinNews' source code to set proxy. – furas May 19 '21 at 20:29
  • I checked source code and it uses [feedparser](https://github.com/scaratozzolo/FinNews/blob/master/FinNews/feed.py#L33) and there is [How to use feedparser with proxy in python 3?](https://stackoverflow.com/questions/59317055/how-to-use-feedparser-with-proxy-in-python-3) - so you may modify source code to use proxy. – furas May 19 '21 at 20:55

0 Answers0