<repo_name>johnnycrusher/WSJ-News-Archiver<file_sep>/news_archivistWSJ.py
﻿
#-----Statement of Authorship----------------------------------------#
#
#  This is an individual assessment item.  By submitting this
#  code I agree that it represents my own work.  I am aware of
#  the University rule that a student must not act in a manner
#  which constitutes academic dishonesty as stated and explained
#  in QUT's Manual of Policies and Procedures, Section C/5.3
#  "Academic Integrity" and Section E/2.1 "Student Code of Conduct".
#
#    Student no: 9154566
#    Student name: <NAME>
#
#  NB: Files submitted without a completed copy of this statement
#  will not be marked.  Submitted files will be subjected to
#  software plagiarism analysis using the MoSS system
#  (http://theory.stanford.edu/~aiken/moss/).
#
#--------------------------------------------------------------------#



#-----Task Description-----------------------------------------------#
#
#  News Archivist
#
#  In this task you will combine your knowledge of HTMl/XML mark-up
#  languages with your skills in Python scripting, pattern matching
#  and Graphical User Interface development to produce a useful
#  application for maintaining and displaying archived news or
#  current affairs stories on a topic of your own choice.  See the
#  instruction sheet accompanying this file for full details.
#
#--------------------------------------------------------------------#



#-----Imported Functions---------------------------------------------#
#
# Below are various import statements that were used in our sample
# solution.  You should be able to complete this assignment using
# these functions only.

# Import the function for opening a web document given its URL.
from urllib.request import urlopen

# Import the function for finding all occurrences of a pattern
# defined via a regular expression, as well as the "multiline"
# and "dotall" flags.
from re import findall, MULTILINE, DOTALL

# A function for opening an HTML document in your operating
# system's default web browser. We have called the function
# "webopen" so that it isn't confused with the "open" function
# for writing/reading local text files.
from webbrowser import open as webopen

# An operating system-specific function for getting the current
# working directory/folder.  Use this function to create the
# full path name to your HTML document.
from os import getcwd

# An operating system-specific function for 'normalising' a
# path to a file to the path-naming conventions used on this
# computer.  Apply this function to the full name of your
# HTML document so that your program will work on any
# operating system.
from os.path import normpath

# Import the standard Tkinter GUI functions.
from tkinter import *

# Import the SQLite functions.
from sqlite3 import *

# Import the date and time function.
from datetime import datetime

import matplotlib
matplotlib.use('Agg')

#
#--------------------------------------------------------------------#



#-----Student's Solution---------------------------------------------#
#
# Put your solution at the end of this file.
#

# Name of the folder containing your archived web documents.  When
# you submit your solution you must include the web archive along with
# this Python program. The archive must contain one week's worth of
# downloaded HTML/XML documents. It must NOT include any other files,
# especially image files.
internet_archive = 'WSJ_Tech'


####### HTML Generation Section ###############
def find_article_image(article, which_head_line):
    #Open and Read the archive file
    news_page = open(article).read()
    #Using Regex to extract the image URL
    article_image = findall('http.*?jpg',news_page)
    #Return the image URL for specified article
    return article_image[which_head_line-1]

def find_article_name(article, which_head_line):
    #Open and Read the archive file
    news_page = open(article).read()
    #Using Regex to extract news article title
    article_name = findall('<title>(.*?)<\/title>', news_page)
    #Return the article title for specified article
    return article_name[which_head_line+1]

def find_article_description(article, which_head_line):
    #Open and Read the archive file
    news_page = open(article).read()
    #Using Regex to extract the desciption
    article_description = findall('<description>(.*?)<\/description>',news_page)
    #Return the article description for specified article
    return article_description[which_head_line]

def find_article_link(article, which_head_line):
    #Open and Read the archive file
    news_page = open(article).read()
    #Using Regex to extract URL of the Article
    article_link = findall('http.*?logy',news_page)
    #Return the URL for specified article
    return article_link[which_head_line-1]

def find_article_time(article, which_head_line):
    #Open and Read the archive file
    news_page = open(article).read()
    #Using Regex to extract the publish date of the article
    article_date = findall('<pubDate>(.*?)<\/pubDate>',news_page)
    #Return the publish date for the speicifed article
    return article_date[which_head_line]

def write_news_articles(article,which_news_number):
    #Open and Read the archive file
    news_page = open(article).read()
    #Base Template for news article section
    news_articles_section = '''
    <h3>number. Article</h3>
    <img src = "Article_Image">
    <p id = "text">Description</p>
    <p id = "text"><b>Full Story:</b><a href="article_Link">article_Link</a></p>
    <p id = "text"><b>Dateline:</b>DateTime</p>
    '''
    #Find the article image
    article_image = find_article_image(article,which_news_number)

    #Detects if the article image still exist
    try:
        urlopen(article_image)
    except:
        #If it doesn't exist then replace the image tag with image not avaliable text
        news_articles_section = news_articles_section.replace('<img src = "Article_Image">',
        '<p id = "noImage">Sorry,image '+ article_image[41:len(article_image)] + ' not found!</p>')
    
    #Replace the article image text with the actual image URL
    news_articles_section = news_articles_section.replace('Article_Image', article_image)

    #Find the article name and replace the article name text with the actual article name
    article_name = find_article_name(article,which_news_number)
    news_articles_section = news_articles_section.replace("Article",article_name)
    
    #Replace number with the actual number
    news_articles_section = news_articles_section.replace("number",str(which_news_number))

    #Find the article description and replace the article description text with the article description
    article_description = find_article_description(article,which_news_number)
    news_articles_section = news_articles_section.replace("Description", article_description)

    #Find the article line and replace the article_Link text with the article link
    article_link = find_article_link(article,which_news_number)
    news_articles_section = news_articles_section.replace("article_Link",article_link)
    
    #find the article publish date and replace DateTime text with article publish date
    article_date = find_article_time(article,which_news_number)
    news_articles_section = news_articles_section.replace("DateTime",article_date)

    #return the news article section as a string
    return news_articles_section

def write_entire_page(article, article_date):
    #allow access to global variables
    global archive_dates
    global html_pages

    #template document for the whole html file
    template='''
    <HTML>
    <Head>
    <style>
    html {
	margin: 0;
	padding: 0;
	background-color: #777;
    }
    body {
        width: 60%;
        margin: 0 auto;
        font: 100% Arial, Helvetica, sans-serif;
        padding: 1em 50px;
        background: lightblue;
    }
    h1 {
        font-family: Georgia, "Times New Roman", Times, serif;
        font-size: 2.5em;
        font-weight: normal;
        font-style: italic;
        text-align: center;
        margin: 0 0 .4em;
        color: darkcyan;
        padding: 5px 10px;
    }
    h2 {font-family:'Times New Roman', Times, serif;
        font-size: 2em;
        font-weight: normal;
        text-align: center}
    h3 {font-family: Cambria, Cochin, Georgia, Times, Times New Roman, serif;
        font-size: 1.5em;
        font-weight: normal;
        text-align: center}
    img{
        display: block;
        margin-left: auto;
        margin-right: auto;
        padding : 15px 5px;
    }
    #startPage{
          margin-left : 25%;
          margin-right: 25%;
    }
    #noImage{
        text-align: center;
        margin:0 auto;
        width: 45%;
        border: 1px solid black;
    }
    #text{
        line-height: 1.6;
        width: 100%;
        margin: 0;
        margin-bottom: 1em;
    }
    </style>
    <Title>The Wall Street Journal Technology</Title>
    </Head>
    <Body>
    <h1 allign="center">The Wall Street Journal Technology Archive</h1>
    <h2>Date</h2>
    <img src= 'Main_Image' width = "436" height = "64">
    <p id = "startPage"><b>News Source:</b><a href="SourceURL">SourceURL</a></p>
    <p id = "startPage"><b>Arcivist:</b> <NAME></p>
    '''
    #Closing tags for the html file
    closing_tags = '''
    </Body>
    </HTML>
    '''

    #Define the main image URL and replace it with Main_Image text
    main_image ='http://online.wsj.com/img/wsj_sm_logo.gif'
    template = template.replace('Main_Image',main_image)

    sourceURL = "http://www.wsj.com/xml/rss/3_7455.xml"
    template = template.replace('SourceURL', sourceURL)

    #For loop to find which article date it is and replace it
    for page in range(0,len(html_pages)-1):
        if (article_date == html_pages[page]):
            template = template.replace('Date', archive_dates[page])
            break
        elif(page >= len(html_pages)-2):
            template = template.replace('Date', 'Latest News')

    #Intilise list for news segmants
    news_segmant = []
    #Generate the 10 news segmants
    for SubArticles in range(0,10):
        news_segmant.append(write_news_articles(article,SubArticles+1))
    #Open the empty html document and set the property to write
    extracted_archive = open("extracted_archive.html",'w')
    #Write the base template for the article
    extracted_archive.write(template)
    #Writing the news segmants into the html document
    for article in news_segmant:
        extracted_archive.write(article)
    #Write the html closing tags into the html document
    extracted_archive.write(closing_tags)
    extracted_archive.close()


################# GUI Section #################
def extract_news():
    #allow access to these global variables
    global internet_archive
    global lastest_downloaded
    global has_archive
    global event_checkbox
    global log_counter
    global connection

    #Grabs the current selection for the Listbox
    which_option = display_choice()
    # Show Error if Latest File has not been archive
    if (latest_downloaded == False and which_option =='Latest.html' ):
        instruction_label['text'] = 'Error:Latest news has not been downloaded'
    
    else:
        #Set the path of the internet archive
        path = normpath(getcwd() + '/' + internet_archive)
        #Grabs the archive file name based on listbox selection
        article = display_choice()
        #Define path for the archived document
        article_path = normpath(path + '/' + article)
        #Write entire page
        write_entire_page(article_path, article)
        #Change the instruction text
        instruction_label['text'] = 'News extrated from archive'
        has_archive = True
        #Check if checkbox is ticked if ticked then add an entry in the sql data base
        if(event_checkbox.get() == 1):
            log_counter += 1
            sql_query_extract = "INSERT INTO Event_Log VALUES(" + str(log_counter) + \
                                 ",'News extracted from archive')"
            event_log.execute(sql_query_extract)
            connection.commit()

def display_news():
    #allow access to these global variables
    global has_archive
    global event_checkbox
    global log_counter
    global connection
    #Check if it has any extracted archives
    if (not has_archive):
        instruction_label['text'] = "Please choose a date to archive..."
    else:
        #Define path to extracted archive
        path = normpath(getcwd()+'/extracted_archive.html')
        #Open Extracted archive
        webopen(path)
        #Change instruction label
        instruction_label['text'] = "Choose another day's news you would like to extract..."
        #Check if checkbox is ticked if ticked then add an entry in the sql data base
        if(event_checkbox.get() == 1):
            log_counter += 1
            sql_query_display = "INSERT INTO Event_Log VALUES(" + str(log_counter) + \
                                ",'Extracted news displayed in web broswer')"
            event_log.execute(sql_query_display)
            connection.commit()
    

def archive_news():
    #allow access to these global variables
    global internet_archive
    global latest_downloaded
    global event_checkbox
    global log_counter
    global connection

    url = 'http://www.wsj.com/xml/rss/3_7455.xml'
    #Open the URL
    latest_copy = urlopen(url)
    #Read the page contents
    latest_page_contents = latest_copy.read().decode('UTF-8')
    #Define the internet archive path
    internet_archive_path = normpath(getcwd() + '/' + internet_archive )
    #Define internet archive latest file path
    latest_archive_path = normpath(internet_archive + '/latest.html')
    #Open the latest arhcive html doc and set to writing mode
    latest_html_page = open(latest_archive_path,'w', encoding = 'UTF-8')
    #Write page contents
    latest_html_page.write(latest_page_contents)
    latest_html_page.close()
    #Change instruction text
    instruction_label['text'] = "Downloaded latest news..."
    latest_downloaded = True
    #Check if checkbox is ticked if ticked then add an entry in the sql data base
    if(event_checkbox.get() == 1):
        log_counter += 1
        sql_query_archive = "INSERT INTO Event_Log VALUES(" + str(log_counter) + \
                                ",'Latest news downloaded and store in archive')"
        event_log.execute(sql_query_archive)
        connection.commit()

def display_choice():
    #allow access to these global variables
    global archive_dates
    global html_pages
    global connection
    #Define current selection
    if (archive_dates_list.curselection() != ()):
        #For loop to interate all the archive dates
        for page in range(0,len(archive_dates)):
            #Check if archive dates match the archive_dates list
            if(archive_dates_list.get(archive_dates_list.curselection()) == archive_dates[page]):
                #set document to html page name
                document = html_pages[page]
                break
    #return html document name
    return document


def activate_logger():
    #allow access to these global variables
    global event_checkbox
    global first_time
    global event_log
    global log_counter
    global connection
    #Check if checkbox is ticked
    if (event_checkbox.get() == 1):
        log_counter += 1
        #connect to SQL Data Base
        connection = connect(database = "event_log.db")
        event_log = connection.cursor()
        #Execute SQL Query
        sql_query_on = "INSERT INTO Event_Log VALUES(" + str(log_counter) + ",'Event logging switched on')" 
        event_log.execute(sql_query_on)
        #Commit the SQL Query to the Database
        connection.commit()         
        first_time = False
    elif(event_checkbox.get() == 0 and first_time == False):
        log_counter += 1
        #Execute SQL Query
        sql_query_off = "INSERT INTO Event_Log VALUES(" + str(log_counter) + ",'Event logging switched off')"
        event_log.execute(sql_query_off)
        #Commit the SQL Query to the Database
        connection.commit()
        #Close the connection to the data base
        event_log.close()
        connection.close()
        
#Global Vars
archive_dates = ['Thu, 12th Oct 2017','Fri, 13th Oct 2017','Sat, 14th Oct 2017',
                'Tue, 17th Oct 2017','Wed, 18th Oct 2017', 'Thu, 19th Oct 2017',
                'Fri, 20th Oct 2017','Latest']
html_pages = ['Thu_12th_Oct.html','Fri_13th_Oct.html','Sat_14th_Oct.html',
            'Tue_17th_Oct.html','Wed_18th_Oct.html','Thu_19th_Oct.html',
            'Fri_20th_Oct.html','Latest.html']
has_archive = False
latest_downloaded = False
first_time = True
log_counter = 0

#Clear Database
connection = connect(database = "event_log.db")
event_log = connection.cursor()
event_log.execute("DELETE FROM Event_Log")
connection.commit()
event_log.close()
connection.close()

#Intialise tkinter window
main_window = Tk()
main_window.title('The Wall Street Journal Technology Archive')

main_window.configure(bg = 'Ivory')

#Create button for extract news
extract_news_button = Button(main_window,
                            height = 2,
                            width = 12,
                            wraplength = 80,
                            justify = LEFT,
                            text = "Extract news from archive",
                            command = extract_news,
                            bg = 'Ivory')

#Create button for display news
display_news_button = Button(main_window,
                            height = 2,
                            width = 12,
                            wraplength = 80,
                            justify = LEFT,
                            text = "Display news extracted",
                            command = display_news,
                            bg = 'Ivory')
#Create button for archive news
archive_news_button = Button(main_window,
                            height = 2,
                            width = 12,
                            wraplength = 80,
                            justify = LEFT,
                            text = "Archive the latest news",
                            command = archive_news,
                            bg = 'Ivory')
#Create label for the instruction
instruction_label = Label(main_window,
                        text = "Choose which day's news to extract...",
                        font = ("Helvetica",20),
                        wraplength = 350,
                        bg = 'Ivory')
#Create Label for the WSJ label
WSJ_label = Label(main_window,
                        text = "The Wall Street Journal Technology",
                        font = ("Helvetica",12),
                        bg = 'Ivory')
#Create Listbox for archive dates
archive_dates_list = Listbox(main_window,
                            height = len(archive_dates),
                            font = ("Helvetica",15))
#add dates in the archive dates
for dates in archive_dates:
    archive_dates_list.insert(END,dates)

#setup variable to monitor event checkbox
event_checkbox = IntVar()
#Create checkbox for event logger
event_logger_checkbox = Checkbutton(main_window,
                                text = "Log Events",
                                variable = event_checkbox,
                                command = activate_logger,
                                bg = 'Ivory')

#Create Image for the GUI
WSJ_logo = PhotoImage(file='The Wall Street Journal Logo.gif')
WSJ_logo_label = Label(main_window, image = WSJ_logo)

#Using Geometry Packer to pack objects into the window
margin_size = 5
archive_dates_list.grid(padx = margin_size, pady = margin_size,
                    row = 1, column = 1, rowspan = 10)
extract_news_button.grid(padx = margin_size, pady = margin_size,
                        row = 1,column = 2)
display_news_button.grid(padx = margin_size, pady = margin_size,
                        row = 2,column = 2)
archive_news_button.grid(padx = margin_size, pady = margin_size,
                        row = 3,column = 2)
event_logger_checkbox.grid(padx = margin_size, pady = margin_size,
                        row = 4, column = 2)
instruction_label.grid(padx=margin_size, pady = margin_size,
                        row = 0, column = 1, columnspan = 2)
WSJ_label.grid(padx = margin_size, pady = margin_size,
                row = 4, column = 0)
WSJ_logo_label.grid(padx = margin_size,pady = margin_size,
                row = 0, column = 0, rowspan = 4)
            
# Start the event loop
main_window.mainloop()<file_sep>/WSJ_Tech/Fri_13th_Oct.html
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"  xmlns:atom="http://www.w3.org/2005/Atom" >
  <channel>
    <title>WSJ.com: WSJD</title>
    <link>http://online.wsj.com</link> 
	  <description>WSJD - Technology</description> 
	  <language>en-us</language> 
	  <copyright>copyright  &#169; 2017 Dow Jones &amp; Company, Inc.</copyright> 
	  <lastBuildDate>Fri, 13 Oct 2017 04:46:02 EDT</lastBuildDate>
	  <image>
      <title>WSJ.com: WSJD</title>
      <url>http://online.wsj.com/img/wsj_sm_logo.gif</url>
      <link>http://online.wsj.com</link> 
    </image>
    <atom:link href="http://online.wsj.com" rel="self" type="application/rss+xml" />
<!--Item 1 of Technology_Lead_Story_1 -->
<item>
      <title>Samsung Expects Another Quarter of Record Profit; CEO to Resign</title>
      <guid isPermaLink="false">SB10211587508256054745704583449670469396266</guid>
      <link>https://www.wsj.com/articles/samsung-expects-another-quarter-of-record-profits-1507853202?mod=rss_Technology</link>
      <description>Samsung Electronics, continuing to see roaring demand for its components, is forecasting third-quarter profits will be the company&#8217;s highest ever. Chief Executive <NAME>, who has overseen the firm&#8217;s lucrative components business, also said he will resign.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO637_30k8J_G_20171012231429.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Fri, 13 Oct 2017 03:11:29 EDT</pubDate>
    </item>
<!--Item 2 of Technology_Lead_Story_1 -->
<item>
      <title>Amazon Suspends Entertainment Chief Roy Price</title>
      <guid isPermaLink="false">SB10211587508256054745704583449713388523892</guid>
      <link>https://www.wsj.com/articles/amazon-suspends-entertainment-chief-roy-price-1507855558?mod=rss_Technology</link>
      <description>Amazon.com suspended the head of its entertainment studio, Roy Price, in the wake of allegations of mismanagement and sexual harassment and criticism of his close business relationship with <NAME>.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO611_AMAZON_G_20171012202236.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Fri, 13 Oct 2017 02:49:40 EDT</pubDate>
    </item>
<!--Item 3 of Technology_Lead_Story_1 -->
<item>
      <title>Cord-Cutters Sap AT&amp;T's TV Business</title>
      <guid isPermaLink="false">SB10211587508256054745704583448622863979176</guid>
      <link>https://www.wsj.com/articles/cord-cutters-sap-at-ts-tv-business-1507809030?mod=rss_Technology</link>
      <description>AT&amp;T continues to lose pay-TV customers despite a wave of new subscribers to its streaming service, a trend that could spell trouble for the entertainment industry.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO271_1Qfkm_G_20171012073510.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 21:36:39 EDT</pubDate>
    </item>
<!--Item 4 of Technology_Lead_Story_1 -->
<item>
      <title>Equifax Removes Webpage to Investigate Possible Hacking</title>
      <guid isPermaLink="false">SB10211587508256054745704583449152776466558</guid>
      <link>https://www.wsj.com/articles/equifax-removes-webpage-to-investigate-possible-hacking-1507831144?mod=rss_Technology</link>
      <description>Embattled Equifax Inc. has moved one of its webpages offline as the company looks into whether hackers tried to breach its systems this week. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-UZ957_0908_C_G_20170908082721.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 23:55:05 EDT</pubDate>
    </item>
<!--Item 5 of Technology_Lead_Story_1 -->
<item>
      <title>Outcome, a Hot Tech Startup, Misled Advertisers With Manipulated Information, Sources Say</title>
      <guid isPermaLink="false">SB11898474094085844247404583435182347847790</guid>
      <link>https://www.wsj.com/articles/outcome-a-hot-tech-startup-misled-advertisers-with-manipulated-information-sources-say-1507834627?mod=rss_Technology</link>
      <description>With funding from <NAME> and Google&#8217;s parent, the Chicago-based firm reported a $5.5 billion valuation. The company says it is reviewing allegations against employees and has strengthened policies.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN571_1010OU_G_20171011061226.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Fri, 13 Oct 2017 00:02:06 EDT</pubDate>
    </item>
<!--Item 6 of Technology_Lead_Story_1 -->
<item>
      <title><NAME> Has a Secret Defender on Twitter: His Wife</title>
      <guid isPermaLink="false">SB10211587508256054745704583449000502258768</guid>
      <link>https://www.wsj.com/articles/roger-goodell-has-a-secret-defender-on-twitter-his-wife-1507839658?mod=rss_Technology</link>
      <description>When media outlets wrote about the NFL commissioner, an anonymous tweeter hit back. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO362_1012GO_G_20171012122414.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Thu, 12 Oct 2017 22:21:48 EDT</pubDate>
    </item>
<!--Item 7 of Technology_Lead_Story_1 -->
<item>
      <title>HP Forecasts a Good 2018 for Profit</title>
      <guid isPermaLink="false">SB11734116578048104032604583449670706937876</guid>
      <link>https://www.wsj.com/articles/hp-forecasts-a-good-2018-for-profit-1507852700?mod=rss_Technology</link>
      <description>HP Inc. expects 2018 to be another good year, with profit projections beating Wall Street expectations, and it&#8217;s pledging to continue to return most of its cash to shareholders.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO599_2JRxW_G_20171012194126.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 19:58:22 EDT</pubDate>
    </item>
<!--Item 8 of Technology_Lead_Story_1 -->
<item>
      <title>New Worry For CEOs: A Career-Ending Cyberattack</title>
      <guid isPermaLink="false">SB10383365917693684297404583445591393602484</guid>
      <link>https://www.wsj.com/articles/cybersecurity-tops-priority-list-for-ceos-after-string-of-high-profile-hacks-1507821018?mod=rss_Technology</link>
      <description>Cyber threats have zoomed to the top of chief executives&#8217; worry lists for fear a data breach could cost them their jobs and take down their businesses.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN972_3fnrP_G_20171011154459.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 15:55:19 EDT</pubDate>
    </item>
<!--Item 9 of Technology_Lead_Story_1 -->
<item>
      <title>Facebook to Disclose Targets of Russia-Backed Election Ads</title>
      <guid isPermaLink="false">SB10211587508256054745704583448811025832172</guid>
      <link>https://www.wsj.com/articles/facebook-to-disclose-what-groups-were-targets-of-russia-backed-election-ads-1507819693?mod=rss_Technology</link>
      <description>Facebook will disclose the types of people targeted by Russian-backed election ads, operating chief <NAME> said, adding that the social-media site was manipulated in a way it shouldn&#8217;t have been.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO290_2WMAw_G_20171012094151.jpg" 
               type="image/jpeg"
               medium="image"
               height="368"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 22:05:53 EDT</pubDate>
    </item>
<!--Item 10 of Technology_Lead_Story_1 -->
<item>
      <title>Friends Donate $30 Million Toward Gates Center at University of Washington</title>
      <guid isPermaLink="false">SB10211587508256054745704583449141149612294</guid>
      <link>https://www.wsj.com/articles/friends-donate-30-million-toward-gates-center-at-university-of-washington-1507838892?mod=rss_Technology</link>
      <description>Friends of Bill and <NAME> donated $30 million to name a computer science building at the University of Washington after the first couple of Microsoft, the school said. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO420_32tnU_G_20171012142222.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Thu, 12 Oct 2017 16:08:15 EDT</pubDate>
    </item>
<!--Item 11 of Technology_Lead_Story_1 -->
<item>
      <title>Cyberattack Captures Data on U.S. Weapons in Four-Month Assault</title>
      <guid isPermaLink="false">SB10211587508256054745704583448442107414984</guid>
      <link>https://www.wsj.com/articles/cyberattack-captures-data-on-u-s-weapons-in-four-month-assault-1507806261?mod=rss_Technology</link>
      <description>A cyberattacker nicknamed &#8220;Alf&#8221; gained access to an Australian defense contractor&#8217;s computers and began a four-month raid that snared data on sophisticated U.S. weapons systems. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO260_2YFQY_G_20171012065033.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 19:27:38 EDT</pubDate>
    </item>
<!--Item 12 of Technology_Lead_Story_1 -->
<item>
      <title>New York Landlords Have to Work Harder to Profit From Airbnb</title>
      <guid isPermaLink="false">SB10211587508256054745704583449030608000320</guid>
      <link>https://www.wsj.com/articles/new-york-landlords-have-to-work-harder-to-profit-from-airbnb-1507834113?mod=rss_Technology</link>
      <description>It is getting more difficult to turn a profit renting out a New York City apartment on Airbnb, according to a new study that could ease fears of landlords converting the city&#8217;s housing stock into a sea of de facto hotel rooms.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO383_2EHAH_G_20171012130311.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 16:29:22 EDT</pubDate>
    </item>
<!--Item 13 of Technology_Lead_Story_1 -->
<item>
      <title>New York AG <NAME> Probing Deloitte Hack</title>
      <guid isPermaLink="false">SB10211587508256054745704583448782285851800</guid>
      <link>https://www.wsj.com/articles/new-york-ag-eric-schneiderman-probing-deloitte-hack-1507815035?mod=rss_Technology</link>
      <description>The New York attorney general&#8217;s office is looking into the cyberbreach at Deloitte that the giant accounting firm says compromised information on a small number of its clients.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO285_3eF2s_G_20171012092113.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 11:55:21 EDT</pubDate>
    </item>
<!--Item 14 of Technology_Lead_Story_1 -->
<item>
      <title>Alibaba Sizes Up Facebook, Amazon With R&amp;D Funding Splurge</title>
      <guid isPermaLink="false">SB10383365917693684297404583446173987790606</guid>
      <link>https://www.wsj.com/articles/alibaba-sizes-up-facebook-amazon-with-r-d-funding-surge-1507707466?mod=rss_Technology</link>
      <description>Chinese e-commerce company Alibaba says it will nearly triple spending on research and development, to more than $15 billion over the next three years, as it seeks to keep pace with Western rivals such as Alphabet and Amazon.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN549_3fQHJ_G_20171011025906.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Wed, 11 Oct 2017 22:02:58 EDT</pubDate>
    </item>
<!--Item 15 of Technology_Lead_Story_1 -->
<item>
      <title>Qualcomm Is Fined $773 Million by Taiwan Over Patent Practices</title>
      <guid isPermaLink="false">SB10211587508256054745704583447220319783766</guid>
      <link>https://www.wsj.com/articles/qualcomm-is-fined-773-million-by-taiwan-over-patent-practices-1507748723?mod=rss_Technology</link>
      <description>Qualcomm was fined about $773 million by the Taiwanese government, the latest setback as the chip maker defends its patent-licensing business against an international wave of regulatory and legal challenges. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN918_2P4N9_G_20171011150116.jpg" 
               type="image/jpeg"
               medium="image"
               height="370"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Wed, 11 Oct 2017 15:08:14 EDT</pubDate>
    </item>
<!--Item 16 of Technology_Lead_Story_1 -->
<item>
      <title>Companies Ask Supreme Court to Hear Gay-Rights Case</title>
      <guid isPermaLink="false">SB10383365917693684297404583445701816366308</guid>
      <link>https://www.wsj.com/articles/companies-ask-supreme-court-to-hear-gay-rights-case-1507730401?mod=rss_Technology</link>
      <description>Apple, <NAME> and dozens of other businesses asked the Supreme Court to find that federal law bars discrimination based on sexual orientation, putting them at odds with the Trump administration.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN410_DISCRI_G_20171010214735.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Wed, 11 Oct 2017 20:50:34 EDT</pubDate>
    </item>
<!--Item 1 of Technology_Lead_Story_2 -->
<item>
      <title>A Hairy Problem for Apps: Delivering Crabs Fast---and Alive</title>
      <guid isPermaLink="false">SB10211587508256054745704583448480621909270</guid>
      <link>https://www.wsj.com/articles/need-fresh-hairy-crabs-there-are-rival-apps-for-that-1507807304?mod=rss_Technology</link>
      <description>E-commerce titans Alibaba and JD.com are competing to deliver hairy crabs fast and alive to customers, as they try to capture the leading edge in delivering fresh food.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VO242_2Squ0_G_20171012053102.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Fri, 13 Oct 2017 04:45:51 EDT</pubDate>
    </item>
<!--Item 2 of Technology_Lead_Story_2 -->
<item>
      <title>To-Do List Apps: 5 Easy Tricks for Using Them Better</title>
      <guid isPermaLink="false">SB11791610971150393684804583442822110276936</guid>
      <link>https://www.wsj.com/articles/to-do-list-apps-5-easy-tricks-to-using-them-better-1507839586?mod=rss_Technology</link>
      <description>Everyone is relying on to-do list apps. But experts like &#8216;Getting Things Done&#8217; productivity guru <NAME> say we can get more out of them. Here&#8217;s how</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN271_Todo_O_G_20171010165421.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Thu, 12 Oct 2017 16:33:33 EDT</pubDate>
    </item>
<!--Item 3 of Technology_Lead_Story_2 -->
<item>
      <title>How to Slack Like a Pro</title>
      <guid isPermaLink="false">SB10211587508256054745704583446872316907046</guid>
      <link>https://www.wsj.com/articles/how-to-slack-like-a-pro-1507745803?mod=rss_Technology</link>
      <description>The future of workplace communication is here. Thank you, Slack&#8212;the best thing to happen to office chitchat since the water-cooler.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN697_YOUGOT_G_20171011113217.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Thu, 12 Oct 2017 09:56:11 EDT</pubDate>
    </item>
<!--Item 4 of Technology_Lead_Story_2 -->
<item>
      <title>Beijing Pushes for a Direct Hand in China's Big Tech Firms</title>
      <guid isPermaLink="false">SB10211587508256054745704583446732582976340</guid>
      <link>https://www.wsj.com/articles/beijing-pushes-for-a-direct-hand-in-chinas-big-tech-firms-1507758314?mod=rss_Technology</link>
      <description>The Chinese government is pushing some of its biggest tech companies&#8212;including Tencent, Weibo and a unit of Alibaba&#8212;to give the state a stake in them and a direct role in corporate decisions.</description>

      <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 11:32:20 EDT</pubDate>
    </item>
<!--Item 1 of Technology_Featured_Stories_3 -->
<item>
      <title>'Ridiculous Mistake' Helped North Korea Steal Secret U.S. War Plans</title>
      <guid isPermaLink="false">SB10211587508256054745704583446651201132848</guid>
      <link>https://www.wsj.com/articles/north-korea-allegedly-used-antivirus-software-to-steal-defense-secrets-1507736060?mod=rss_Technology</link>
      <description>A breach of South Korea&#8217;s military database in which suspected North Korean hackers pilfered defense secrets originated in compromised third-party cybersecurity software and was made possible by an unintended connection to the internet. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN600_NKCYBE_G_20171011090312.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 04:01:07 EDT</pubDate>
    </item>
<!--Item 2 of Technology_Featured_Stories_3 -->
<item>
      <title>Amazon Welcomes Teens, Gives Parents the Purse Strings</title>
      <guid isPermaLink="false">SB10383365917693684297404583446033141994400</guid>
      <link>https://www.wsj.com/articles/amazon-welcomes-teens-with-new-parent-controlled-shopping-allowance-1507726803?mod=rss_Technology</link>
      <description>Amazon&#8217;s new program, launched Wednesday, lets parents manage&#8212;and fund&#8212;online-shopping accounts for their teens. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN461_2cAxE_G_20171011010947.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Wed, 11 Oct 2017 22:43:11 EDT</pubDate>
    </item>
<!--Item 3 of Technology_Featured_Stories_3 -->
<item>
      <title>How Smartphones Hijack Our Minds</title>
      <guid isPermaLink="false">SB11973195686415373603904583431173622222096</guid>
      <link>https://www.wsj.com/articles/how-smartphones-hijack-our-minds-1507307811?mod=rss_Technology</link>
      <description>Research suggests that as the brain grows dependent on phone technology, the intellect weakens. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VL791_SMARTP_G_20171006105737.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Sat, 07 Oct 2017 11:34:57 EDT</pubDate>
    </item>
<!--Item 4 of Technology_Featured_Stories_3 -->
<item>
      <title>Apple Strikes Deal With Spielberg's Amblin for 'Amazing Stories' Reboot</title>
      <guid isPermaLink="false">SB10383365917693684297404583445092383505844</guid>
      <link>https://www.wsj.com/articles/apple-signs-content-deal-with-steven-spielberg-1507656455?mod=rss_Technology</link>
      <description>Apple is betting on acclaimed director and producer <NAME> for its first major foray into creating original video content. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VN135_3eMOi_G_20171010131710.jpg" 
               type="image/jpeg"
               medium="image"
               height="370"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Tue, 10 Oct 2017 17:40:59 EDT</pubDate>
    </item>
<!--Item 5 of Technology_Featured_Stories_3 -->
<item>
      <title><NAME> on How to Get to Gender Equality</title>
      <guid isPermaLink="false">SB11004722923079933770204583433701298062338</guid>
      <link>https://www.wsj.com/articles/sheryl-sandberg-on-how-to-get-to-gender-equality-1507608721?mod=rss_Technology</link>
      <description>The Facebook chief operating officer and founder of LeanIn.Org says the first step is realizing how far we have to go. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/WW-AA745_SANDBE_G_20171005153924.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Tue, 10 Oct 2017 23:02:57 EDT</pubDate>
    </item>
<!--Item 6 of Technology_Featured_Stories_3 -->
<item>
      <title>SpaceX Has Successful Launch As It Ramps Up Operational Tempo</title>
      <guid isPermaLink="false">SB10383365917693684297404583442741198136554</guid>
      <link>https://www.wsj.com/articles/spacex-has-successful-launch-as-it-ramps-up-operational-tempo-1507557834?mod=rss_Technology</link>
      <description>Space Exploration Technologies blasted 10 commercial satellites into orbit, completing the first of a pair of consecutive launches slated from opposite coasts in roughly two days. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VM472_3dfeQ_G_20171009093050.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Tue, 10 Oct 2017 07:42:39 EDT</pubDate>
    </item>
<!--Item 7 of Technology_Featured_Stories_3 -->
<item>
      <title>Amazon Has a Luxury Problem</title>
      <guid isPermaLink="false">SB12661405825356173294704583428972789069856</guid>
      <link>https://www.wsj.com/articles/amazon-has-a-luxury-problem-1507460401?mod=rss_Technology</link>
      <description>Swatch and other high-end brands are staying away from Amazon&#8217;s online marketplace, saying it undermines the strict control that is key to maintaining a sense of exclusivity&#8212;and keeping prices high. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VL869_luxama_G_20171006140638.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Thu, 12 Oct 2017 06:21:41 EDT</pubDate>
    </item>
<!--Item 8 of Technology_Featured_Stories_3 -->
<item>
      <title>Alphabet Gets Approval for Giant Balloons to Restore Puerto Rico's Wireless Service</title>
      <guid isPermaLink="false">SB11898474094085844247404583439243374185874</guid>
      <link>https://www.wsj.com/articles/alphabet-gets-approval-for-giant-balloons-to-restore-puerto-ricos-wireless-service-1507409362?mod=rss_Technology</link>
      <description>The FCC issued Alphabet Inc. an experimental license for Project Loon, a balloon network that could restore connectivity to hurricane-battered Puerto Rico. </description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VM140_2BlC2_G_20171007154538.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Sat, 07 Oct 2017 20:00:23 EDT</pubDate>
    </item>
<!--Item 9 of Technology_Featured_Stories_3 -->
<item>
      <title>Behind Tesla's Production Delays: Parts of Model 3 Were Made by Hand</title>
      <guid isPermaLink="false">SB11569820067392243519004583434992341436994</guid>
      <link>https://www.wsj.com/articles/behind-teslas-production-delays-parts-of-model-3-were-being-made-by-hand-1507321057?mod=rss_Technology</link>
      <description>Tesla blamed &#8220;production bottlenecks&#8221; for making only a fraction of the promised 1,500 Model 3s. Unknown to analysts, investors and the hundreds of thousands of customers who signed up to buy it, as recently as early September major portions of the Model 3 were still being banged out by hand.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VL797_tesla1_G_20171006110823.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>FREE</category>
    <pubDate>Sun, 08 Oct 2017 07:56:20 EDT</pubDate>
    </item>
<!--Item 10 of Technology_Featured_Stories_3 -->
<item>
      <title><NAME> Drove Intel's Computing Dominance</title>
      <guid isPermaLink="false">SB11898474094085844247404583435251970477418</guid>
      <link>https://www.wsj.com/articles/paul-otellini-drove-intels-computing-dominance-1507300202?mod=rss_Technology</link>
      <description>As Intel CEO <NAME> presided over advances in semiconductor design that cemented the company&#8217;s dominance in the computers found in countless homes and businesses around the world. He died Oct. 2 at 66.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VL308_otelli_G_20171005133523.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Fri, 06 Oct 2017 18:11:45 EDT</pubDate>
    </item>
<!--Item 11 of Technology_Featured_Stories_3 -->
<item>
      <title>Chip Makers Are Adding 'Brains' Alongside Cameras' Eyes</title>
      <guid isPermaLink="false">SB12661405825356173294704583429072792279716</guid>
      <link>https://www.wsj.com/articles/chip-makers-are-adding-brains-alongside-cameras-eyes-1507114801?mod=rss_Technology</link>
      <description>Chip companies are adding greater smarts to cameras, spurring a new generation of machines that not only capture imagery but interpret and act on what they see.</description>

      <media:content xmlns:media="http://search.yahoo.com/mrss"
               url="http://s.wsj.net/public/resources/images/BN-VK244_smart1_G_20171003140007.jpg" 
               type="image/jpeg"
               medium="image"
               height="369"
               width="553"> 
    <media:description>image</media:description>
    </media:content>
    <category>PAID</category>
    <pubDate>Sat, 07 Oct 2017 20:11:22 EDT</pubDate>
    </item>
</channel>
</rss>
<!-- fastdynapage - secj2kwebappp09 - Fri 10/13/17 - 04:46:02 EDT -->
