Wednesday, 20 August 2014

Scrape Data Point Using Python


I am looking to scrape a data point using Python off of the url http://www.cavirtex.com/orderbook .

The data point I am looking to scrape is the lowest bid offer, which at the current moment looks like this:

<tr>
 <td><b>Jan. 19, 2014, 2:37 a.m.</b></td>
 <td><b>0.0775/0.1146</b></td>
 <td><b>860.00000</b></td>
 <td><b>66.65 CAD</b></td>
</tr>

The relevant point being the 860.00 . I am looking to build this into a script which can send me an email to alert me of certain price differentials compared to other exchanges.

I'm quite noobie so if in your explanations you could offer your thought process on why you've done certain things it would be very much appreciated.

Thank you in advance!

Edit: This is what I have so far which will return me the name of the title correctly, I'm having trouble grabbing the table data though.

import urllib2, sys
from bs4 import BeautifulSoup

site= "http://cavirtex.com/orderbook"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
print soup.title



Here is the code for scraping the lowest bid from the 'Buying BTC' table:

from selenium import webdriver

fp = webdriver.FirefoxProfile()
browser = webdriver.Firefox(firefox_profile=fp)
browser.get('http://www.cavirtex.com/orderbook')

lowest_bid = float('inf')
elements = browser.find_elements_by_xpath('//div[@id="orderbook_buy"]/table/tbody/tr/td')

for element in elements:
    text = element.get_attribute('innerHTML').strip('<b>|</b>')
    try:
        bid = float(text)
        if lowest_bid > bid:
            lowest_bid = bid
    except:
        pass

browser.quit()
print lowest_bid

In order to install Selenium for Python on your Windows-PC, run from a command line:

pip install selenium (or pip install selenium --upgrade if you already have it).

If you want the 'Selling BTC' table instead, then change "orderbook_buy" to "orderbook_sell".

If you want the 'Last Trades' table instead, then change "orderbook_buy" to "orderbook_trades".

Note:

If you consider performance critical, then you can implement the data-scraping via URL-Connection instead of Selenium, and have your program running much faster. However, your code will probably end up being a lot "messier", due to the tedious XML parsing that you'll be obliged to apply...

Here is the code for sending the previous output in an email from yourself to yourself:

import smtplib,ssl

def SendMail(username,password,contents):
    server = Connect(username)
    try:
        server.login(username,password)
        server.sendmail(username,username,contents)
    except smtplib.SMTPException,error:
        Print(error)
    Disconnect(server)

def Connect(username):
    serverName = username[username.index("@")+1:username.index(".")]
    while True:
        try:
            server = smtplib.SMTP(serverDict[serverName])
        except smtplib.SMTPException,error:
            Print(error)
            continue
        try:
            server.ehlo()
            if server.has_extn("starttls"):
                server.starttls()
                server.ehlo()
        except (smtplib.SMTPException,ssl.SSLError),error:
            Print(error)
            Disconnect(server)
            continue
        break
    return server

def Disconnect(server):
    try:
        server.quit()
    except smtplib.SMTPException,error:
        Print(error)

serverDict = {
    "gmail"  :"smtp.gmail.com",
    "hotmail":"smtp.live.com",
    "yahoo"  :"smtp.mail.yahoo.com"
}

SendMail("your_username@your_provider.com","your_password",str(lowest_bid))

The above code should work if your email provider is either gmail or hotmail or yahoo.

Please note that depending on your firewall configuration, it may ask your permission upon the first time you try it...



Source: http://stackoverflow.com/questions/21217034/scrape-data-point-using-python

Sunday, 17 August 2014

Data From Web Scraping Using Node.JS Request Is Different From Data Shown In The Browser

Right now, I am doing some simple web scraping, for example get the current train arrival/departure information for one railway station. Here is the example link, http://www.thetrainline.com/Live/arrivals/chester, from this link you can visit the current arrival trains in the chester station.

I am using the node.js request module to do some simple web scraping,

app.get('/railway/arrival', function (req, res, next) {
    console.log("/railway/arrival/  "+req.query["city"]);
    var city = req.query["city"];
    if(typeof city == undefined || city == undefined) { console.log("if it undefined"); city ="liverpool-james-street";}
    getRailwayArrival(city,
       function(err,data){
           res.send(data);
        }
       );
});

function getRailwayArrival(station,callback){
   request({
    uri: "http://www.thetrainline.com/Live/arrivals/"+station,
   }, function(error, response, body) {
      var $ = cheerio.load(body);

      var a = new Array();
      $(".results-contents li a").each(function() {
        var link = $(this);
        //var href = link.attr("href");
        var due = $(this).find('.due').text().replace(/(\r\n|\n|\r|\t)/gm,"");   
        var destination = $(this).find('.destination').text().replace(/(\r\n|\n|\r|\t)/gm,"");
        var on_time = $(this).find('.on-time-yes .on-time').text().replace(/(\r\n|\n|\r|\t)/gm,"");
        if(on_time == undefined)  var on_time_no = $(this).find('.on-time-no').text().replace(/(\r\n|\n|\r|\t)/gm,"");
        var platform = $(this).find('.platform').text().replace(/(\r\n|\n|\r|\t)/gm,"");

        var obj = new Object();
        obj.due = due;obj.destination = destination; obj.on_time = on_time; obj.platform = platform;
        a.push(obj);
console.log("arrival  ".green+due+"  "+destination+"  "+on_time+"  "+platform+"  "+on_time_no);      
    });
    console.log("get station data  "+a.length +"   "+ $(".updated-time").text());
    callback(null,a);

  });
}

The code works by giving me a list of data, however these data are different from the data seen in the browser, though the data come from the same url. I don't know why it is like that. is it because that their server can distinguish the requests sent from server and browser, that if the request is from server, so they sent me the wrong data. How can I overcome this problem ?

thanks in advance.

2 Answers

They must have stored session per click event. Means if u visit that page first time, it will store session and validate that session for next action you perform. Say, u select some value from drop down list. for that click again new value of session is generated that will load data for ur selected combobox value. then u click on show list then that previous session value is validated and you get accurate data.

Now see, if you not catch that session value programatically and not pass as parameter with that request, you will get default loaded data or not get any thing. So, its chalenging for you to chatch that data.Use firebug for help.

Another issue here could be that the generated content occurs through JavaScript run on your machine. jsdom is a module which will provide such content but is not as lightweight.

Cheerio does not execute these scripts and as a result content may not be visible (as you're experiencing). This is an article I read a while back and caused me to have the same discovery, just open the article and search for "jsdom is more powerful" for a quick answer:

Source:http://stackoverflow.com/questions/15785360/data-from-web-scraping-using-node-js-request-is-different-from-data-shown-in-the?rq=1

Tuesday, 12 August 2014

How Your Online Information is Stolen - The Art of Web Scraping and Data Harvesting

Web scraping, also known as web/internet harvesting involves the use of a computer program which is able to extract data from another program's display output. The main difference between standard parsing and web scraping is that in it, the output being scraped is meant for display to its human viewers instead of simply input to another program.

Therefore, it isn't generally document or structured for practical parsing. Generally web scraping will require that binary data be ignored - this usually means multimedia data or images - and then formatting the pieces that will confuse the desired goal - the text data. This means that in actually, optical character recognition software is a form of visual web scraper.

Usually a transfer of data occurring between two programs would utilize data structures designed to be processed automatically by computers, saving people from having to do this tedious job themselves. This usually involves formats and protocols with rigid structures that are therefore easy to parse, well documented, compact, and function to minimize duplication and ambiguity. In fact, they are so "computer-based" that they are generally not even readable by humans.

If human readability is desired, then the only automated way to accomplish this kind of a data transfer is by way of web scraping. At first, this was practiced in order to read the text data from the display screen of a computer. It was usually accomplished by reading the memory of the terminal via its auxiliary port, or through a connection between one computer's output port and another computer's input port.

It has therefore become a kind of way to parse the HTML text of web pages. The web scraping program is designed to process the text data that is of interest to the human reader, while identifying and removing any unwanted data, images, and formatting for the web design.

Though web scraping is often done for ethical reasons, it is frequently performed in order to swipe the data of "value" from another person or organization's website in order to apply it to someone else's - or to sabotage the original text altogether. Many efforts are now being put into place by webmasters in order to prevent this form of theft and vandalism.

Source:http://ezinearticles.com/?How-Your-Online-Information-is-Stolen---The-Art-of-Web-Scraping-and-Data-Harvesting&id=923976

Friday, 1 August 2014

Automated SEO Tools Can Keep You Out of the SERPs

Every day, thousands of newcomers enter the world of internet marketing. They join all of the popular forums, follow popular advice, and purchase a bunch of tools to automate the process. While all three of these things are full of potential problems and pitfalls, it is the automated tools that have the potential to cause the greatest harm.

Why do People Buy Automated SEO Tools?

Automated SEO tools make some very grand promises. First, they promise to eliminate all of the hard work and effort that is needed to succeed with making money online. Next, they promise to give you an "edge" over your competitors. Finally, they promise to do it all for less than outsourcing.

But most of these tools don't work properly, meaning that any money you spent is money wasted. If you can't use it, you can't get any sort of return on your investment.

The few that do work properly, though, typically use techniques that are frowned upon by the search engines. They violate the terms of service, as well as commonly accepted web etiquette.

For instance, Scrape Box is a tool that is designed to find blogs on which you can comment and generate back links. It's a valuable tool if you're using it to automate the finding of relevant blogs. After that, though, it can only get you in trouble.

Just like most of these tools, Scrape Box is going to guide you through the process of creating a generic comment template. It will then assist you with "spinning" that comment, so that you can have hundreds (or even thousands) of "unique" versions.

What ends up happening, though, is that you end up with comments that resemble gibberish more than anything else. The tool then pushes these comments to blogs with links back to your website. And that's when everything goes downhill.

Search Engine Algorithms vs Automated SEO Tools

The most recent batch of algorithm updates, like Panda and Penguin, are designed to help Google better identify spam that is used for nothing other than search engine optimization. When you use Scrape Box to build and publish your content, you're spamming the web.

When Google's spiders crawl the content on these blogs and identify them as spam, they'll also note the fact that a link was sent back to your site. If you have too many of these, it will raise a red flag and your site may end up deindexed.

If you're lucky, you won't be penalized that harshly. Instead, all of your links will end up devalued. That isn't much better, though, because then the original cash investment in the tool, as well as all of the time you spent setting everything up, will be for nothing.

All of the popular SEO automation tools focus on spamming the web to build back links. This includes:

    Tools designed to automate blog comments

    Tools designed to automate article directory submissions

    Tools designed to submit your site to social bookmarking directories

    Tools designed to spin your content for uniqueness

The end results are disappointing, at best. You spend money on a tool that pushes out thousands of back links that never really help your SEO campaign. Ultimately, your site develops a back link profile that is so damaged that no amount of hard, legitimate work can ever overcome it.

Slow and Steady Wins the Race

The allure and appeal of these tools is simple to understand. They eliminate all of the hard work that would go into building a real back link profile. The problem, though, is easy to understand.

If you were to perform these tasks manually it would take a long time. But the quality of the back links you receive will far outweigh anything the automated tools could do for you.

Sure, you might not be able to manually generate a thousand back links in one day. But Google knows that, and when you do so you immediately set off a red flag. That's not how you build a solid, long lasting ranking.

By handling each step in your SEO campaign manually you will build a more natural and diverse back link footprint over time. Your rankings won't come quickly, but they'll stick for a very long time.

Source:http://ezinearticles.com/?Automated-SEO-Tools-Can-Keep-You-Out-of-the-SERPs&id=7427357

Monday, 14 July 2014

Benefits of Outsourcing Data Entry Work in India

Now Days it's a trend to outsource Data Entry Work to reliable service provider who provides excellent output out of their work. Many Companies or Organization prefer to outsource data entry work to offshore location. One of the key reasons why it's become so popular is the fact that the services they provide from highly qualified professionals with cost effective and time bound.

India is well positioned to address global BPO needs. Statistics expose that nearly half of the Fortune 800 companies believe India as a reliable target for offshore outsourcing.

There are lots of benefits of outsourcing data entry work in India

o Reduce capital costs of infrastructure
o Increase productivity and efficiency
o Reduce storage needs
o Latest standard and technology
o Extremely trained workforce
o Quick turn around time with high accuracy
o Strong quality maintained
o Saving human resources
o Focus on your core business.
o Competitive pricing which are low as 40-60% of the prevailing US costs
o Excellent training infrastructure

Data Entry is the procedure of handling and processing over data. There are different forms of data entry like data entry for survey forms, legal services, entry for medical claim forms. Data for keeping track for credit and debit card transactions.

Data entry online services include entering data into websites, e-books, entering image in different format, Data processing and submitting forms, creating database for indexing and mailing for data entered. It also used in insurance claim entry. Procedure of processing of the forms and insurances claims are kept track of data entry services. Scanned image are required for file access and credit and debit card entry.

Data Entry is one of the leading elements for running a business successfully.

Offshore Data Entry has great infrastructure for data entry work projects. We have great equipments, facilities which provide you accurate data entry with high data security. Our data entry services, data entry contract give you quality assurance.

Source: http://ezinearticles.com/?Benefits-of-Outsourcing-Data-Entry-Work-in-India&id=1269756

Thursday, 10 July 2014

Web Data Extraction Services and Data Collection Form Website Pages

For any business market research and surveys plays crucial role in strategic decision making. Web scrapping and data extraction techniques help you find relevant information and data for your business or personal use. Most of the time professionals manually copy-paste data from web pages or download a whole website resulting in waste of time and efforts.

Instead, consider using web scraping techniques that crawls through thousands of website pages to extract specific information and simultaneously save this information into a database, CSV file, XML file or any other custom format for future reference.

Examples of web data extraction process include:

• Spider a government portal, extracting names of citizens for a survey
• Crawl competitor websites for product pricing and feature data
• Use web scraping to download images from a stock photography site for website design

Automated Data Collection

Web scraping also allows you to monitor website data changes over stipulated period and collect these data on a scheduled basis automatically. Automated data collection helps you discover market trends, determine user behavior and predict how data will change in near future.

Examples of automated data collection include:

• Monitor price information for select stocks on hourly basis
• Collect mortgage rates from various financial firms on daily basis
• Check whether reports on constant basis as and when required

Using web data extraction services you can mine any data related to your business objective, download them into a spreadsheet so that they can be analyzed and compared with ease.

In this way you get accurate and quicker results saving hundreds of man-hours and money!

With web data extraction services you can easily fetch product pricing information, sales leads, mailing database, competitors data, profile data and many more on a consistent basis.

Source: http://ezinearticles.com/?Web-Data-Extraction-Services-and-Data-Collection-Form-Website-Pages&id=4860417

Tuesday, 1 July 2014

Seven Tips To Successfully Offshore Marketing Operations

Several weeks ago, I met a senior marketing executive from one of the world's largest brands. She was discussing the possibility of offshoring their marketing operations to.

As we got into the discussion, it was clear that there were three key drivers for their decision to offshore marketing operations -

    The brand had been asked to reduce spend by at least 20 percent. To put this in context, various industry reports state that 2009 marketing budgets were, on average, cut by over 20 percent compared to pre-recessionary levels. And the number of companies that cut marketing budgets was 25 percent higher than predicted in January 2009.

         As brands go global, maintaining brand consistency across geographies is becoming a huge issue for marketers. Consistency is important not just from a customer experience standpoint but also from the perspective of marketing efficiency. If you create standardized brand "templates," the local geographies can respond faster to market/sales needs.

         The marketing function is under pressure to deliver ever ROI much faster than before. Management is asking tougher questions of its marketing teams; the focus on metrics has never been sharper.

     I realized that the company had gone after the usual cost reductions such as the elimination of travel, training, new hiring and new campaigns. However, they were looking to further reduce cost and increase efficiency. This triggered the idea of outsourcing/offshoring marketing operations.

If companies are interested in offshore their marketing operations, what can they do to ensure that their plan is well-thought out and effective? My counsel to this particular marketing executive was to keep seven mantras in mind:

    Secure a champion - Ensure that the company has an offshoring sponsor or champion who can evangelize the need for offshore delivery, address any issues that come up and resolve problems.

         Charge the CMO to drive adoption - Make sure that the Chief Marketing Officer (CMO) is fully supportive of the offshoring plan. The CMO's approval should be communicated to all brand managers else to combat resistance from the brand managers. One trick that I have seen work is to have the CMO ask each CEO during their monthly/quarterly/annual marketing reviews how they have leveraged the offshore unit to deliver marketing efficiencies. This will ensure that all the brand managers see offshoring as a CMO priority.

         Be clear about what can and what cannot be offshored - Draw up a list of functions that can be delivered from an offshore center. For example, offshoring event management can be costly and ineffective because it requires much client intimacy in terms of planning and last minute exigencies like booth set-up and brochure placement among others. While the designing of the booth can be offshored the logistics needs to be managed onsite. Therefore, draw up a list of what can and what cannot be offshored.

         Start with the low-hanging fruit to build credibility - The list of activities to be offshored must have the highest probability of delivering on metrics of efficiency, time and cost. To be credible, the offshore unit must first deliver low-hanging fruit, and then gradually scale up to more complex tasks. For example - start with parts of email marketing such as database creation and validation, design layout of marketing collateral, making brand-consistent PowerPoint presentations, website/portal development and maintenance, among others. Once these reach a certain level of stability, start to look at more complex aspects of marketing such as campaign design, or content creation.

         Keep all delivery options open - Offshore centers can be set up in several forms. These include a fully owned captive center, outsourcing functions to a third party service provider, or creating a hybrid model where some parts of the operations are outsourced to a third party service provider and some are retained within the captive center.

         Set up a robust governance structure - This is probably one of the most important but least understood outsourcing issues. A documented governance framework that details every process and workflow will help the delivery teams by making the task “process-oriented”. It will also put in place strong review mechanisms through steering committees to address any issues that the center or its client users may face.

        Publicize the offshore center’s successes - The company must ensure that the offshore center's successes and any client accolades received are publicized amongst top management and the wider marketing team. Perception matters.

Marketers have outsourced creative, right-brained activities as early as the seventeenth century. That was the genesis of the advertising industry. Since then, companies have evolved to a stage today when marketers outsource a majority of their functions - be it direct marketing, advertising, events, media planning, and even analytics which was hitherto closely held within the “ivory tower." Some have outsourced more than others. But today, an even broader adoption of outsourcing is underway - that of entire marketing operations. Marketers need to embrace this change and make the most of it to drive greater value for their business.

Source:http://blogs.wns.com/Resources/Blogs/BlogTopics/tabid/93/Article/99/seven-tips-to-successfully-offshore-marketing-operations.aspx