firefox_website_02.pl extraction SQLite – http…

SELECT
    extracted_value, field2,
    CASE
        WHEN field2 LIKE '<%' AND field2 LIKE '%>' THEN
            SUBSTR(field2, INSTR(field2, '<') + 1, INSTR(field2, '>') - INSTR(field2, '<') - 1)
        WHEN field2 LIKE '<%' THEN
            'Starts with <, but missing >'
        ELSE
            'Does not start with <'
    END AS extracted_value
FROM firefox_website_02_PHONE;

firefox_website_02.pl

use strict;
use warnings;

# Initialize variables to store extracted URLs
my @google_maps_urls;

# Process each HTML file (1.html to 25.html)
for my $file_number (1..25) {
    my $input_file = "${file_number}.html";

    # Open the current input file for reading
    open my $input_fh, '<', $input_file or warn "Cannot open input file '$input_file': $!";

    my $previous_line = '';
    my $current_line = '';
    my $extracting = 0;

    # Read each line and look for URLs
    while (my $line = <$input_fh>) {
        chomp $line;

        # Check if the current line contains "+82"
        if ($current_line =~ /\+82/) {
            # Check if the next line contains "Website"
            if ($line =~ /Website/) {
                $extracting = 1;
                push @google_maps_urls, "$input_file, $current_line";
            }
        }

        # Continue extracting 3 more lines if we're in an extraction state
        if ($extracting) {
            push @google_maps_urls, "$input_file, $line";
            if (@google_maps_urls % 4 == 0) {
                $extracting = 0;
            }
        }

        # Store the current line for the next iteration
        $previous_line = $current_line;
        $current_line = $line;
    }

    # Close the current input file
    close $input_fh;
}

# Save the extracted URLs to a file
my $output_file = 'firefox_website_02.txt';
open my $output_fh, '>', $output_file or die "Cannot open output file '$output_file': $!";

foreach my $url (@google_maps_urls) {
    print $output_fh "$url\n";
}

# Close the output file
close $output_fh;

print "Extraction complete. Extracted 4 lines (including +82 and Website) are saved in '$output_file'\n";

firefox_02.pl

use strict;
use warnings;

# Initialize an array to store extracted content
my @extracted_content;

# Process each HTML file (1.html to 25.html)
for my $file_number (1..25) {
    my $input_file = "${file_number}.html";

    # Open the current input file for reading
    open my $input_fh, '<', $input_file or warn "Cannot open input file '$input_file': $!";

    # Read each line and look for URLs and +82 content
    while (my $line = <$input_fh>) {
        chomp $line;

        # Extract URLs matching /https:\/\/www\.google\.com\/maps\/place/
        if ($line =~ /https:\/\/www.google.com\/maps\/place/) {
            # Remove leading '<' and trailing '>'
            $line =~ s/^<(.+)>$/$1/;
            push @extracted_content, "$input_file,$line";
        }

        # Extract content starting with +82 and going to the end of the line
        if ($line =~ /\+82(.+)/) {
            my $plus82_content = "+82$1";  # Include +82 in the extracted content
            push @extracted_content, "$input_file,$plus82_content";
        }
    }

    # Close the current input file
    close $input_fh;
}

# Save the extracted content to a file
my $output_file = 'firefox_02.txt';
open my $output_fh, '>', $output_file or die "Cannot open output file '$output_file': $!";
foreach my $entry (@extracted_content) {
    print $output_fh "$entry\n";
}
close $output_fh;

print "Extraction complete. Extracted content is saved in '$output_file'\n";

google sheet – 15 30 45 .. 820 borderline macro

function border_151() {
  var spreadsheet = SpreadsheetApp.getActive();

  // Define the starting and ending row numbers (15 and 820).
  var startRow = 15;
  var endRow = 820;

  // Loop through rows in increments of 15 and set the border.
  for (var row = startRow; row <= endRow; row += 15) {
    spreadsheet.getRange('A' + row + ':B' + row).setBorder(null, null, true, null, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID);
  }
}