Рубрики
Без рубрики

Python Freelance: мой первый Fiverr Gig и как я решил его

Базовый сценарий WebScriping в Python | Запросы |. Beautifulsoup |. Argparse продал Gig (35 долларов) Это описание GIG, которое я предложил в моем профиле, чтобы получить мой первый Gig: компания по электронной почте Marketing наняла меня, чтобы написать сценарий Python, который удовлетворяет следующим требованиям. Требования Что такое вход? (файл, тип файла, электронная почта, текст, …) … Python Freelance: мой первый Fiverr Gig и как я решил почитать больше »

Автор оригинала: Lukas.

Базовый сценарий WebScriping в Python | Запросы |. Beautifulsoup |. Argparse.

Продано Gig (35 долларов)

Это описание GIG, которое я предложил в моем профиле, чтобы получить мой первый гиг:

Компания по электронной почте Marketing наняла меня, чтобы написать сценарий Python, который удовлетворяет следующим требованиям.

Требования

  1. Что такое вход? (файл, тип файла, электронная почта, текст, …) Файл со списком адресов электронной почты (по одному на линию)
  2. Что такое выход? (файл, тип файла, текст, CSV, …) Файл со всеми адресами электронной почты, которые из одноразового поставщика электронной почты: https://gist.github.com/michenriksen/8710649.
  3. Откуда приходит вклад? (Пользовательский ввод с консоли, определенный путь, …) Как должен быть обработан вход? Где должен идти выход? (Консоль, файл, …) Файл в файл
  4. Что должен делать скрипт, если ввод содержит ошибки или неполно? Игнорировать линию

Код

Я записал видео, в котором я перехожу код, который я разработал:

Вот код, который я разработал, чтобы фильтровать адреса электронной почты от поставщиков электронной почты SPAM и очистить список адресов электронной почты от поддельных адресов электронной почты.

import requests
import sys
import argparse
from bs4 import BeautifulSoup

"""
Input: Text file containing email addresses, one address per line
Output: A file containing all email address from the input file
whose domain was found in the file under the URL
"""
__author__ = 'lukasrieger'

# constant default settings
URL = 'https://gist.github.com/michenriksen/8710649'
PATH_DOMAINS_LOCAL = 'disposable_domains.txt'
DEFAULT_INPUT = 'emails.txt'
DEFAULT_OUTPUT = 'filtered_emails.txt'



def refresh_domains_file():
    """
    This method gets the disposable domains list from the git repo
    as html and scrapes it. Finally all domains are written to a file.
    """
    html = requests.get(URL).content
    soup = BeautifulSoup(html, features="html.parser")
    tds = soup.findAll('td', class_='js-file-line')
    domains = [td.text + '\n' for td in tds]

    with open(PATH_DOMAINS_LOCAL, 'w') as file:
        file.writelines(domains)
        
    print(f'Refreshed disposable domains file under path {PATH_DOMAINS_LOCAL}')


def get_disposable_domains(refresh=False):
    """
    This method loads the entries from the disposable domains file
    into a list and returns the list. If the parameter refresh=True,
    the file is refreshed with the domains given in the git repo.
    """
    if refresh:
        # load data from git repo
        refresh_domains_file()
    
    domains = None
    with open(PATH_DOMAINS_LOCAL, 'r') as file:
        domains = file.readlines()
    # remove linebreaks
    return [domain[:-1] for domain in domains]


def check_mails(in_path, out_path, refresh=False):
    """
    Loads the list of disposable domains and
    checks each address from the input file for those domains.
    Only if the list of disposable domains contains the email's
    domain, the email address will be added to the outfile.
    """
    disposable_domains = get_disposable_domains(refresh=refresh)
    count = 0
    print(disposable_domains)
    with open(in_path, 'r') as in_file, open(out_path, 'w') as out_file:
        for email in in_file:
            try:
                prefix, suffix = email.split('@')
                #print(prefix, suffix, '|')
            except:
                print(f'Invalid email address: {email}')
                continue
                
            # remove blanks around the suffix
            if suffix.strip() in disposable_domains:
                out_file.write(email)
                count += 1
                
    return count



if __name__ == '__main__':
    print('Filtering emails...')

    parser = argparse.ArgumentParser(description='Filter email addresses by disposable domains.')
    parser.add_argument('-i', type=str, nargs='?', help='Path of input file with the email addresses.')
    parser.add_argument('-o', type=str, nargs='?', help='Path where the output will be put.')
    parser.add_argument('-r', action='store_true', help='Refresh local copy of the disposable domains file.')
    
    args = parser.parse_args()

    path_input = args.i if args.i else DEFAULT_INPUT
    path_output = args.o if args.o else DEFAULT_OUTPUT
    refresh = args.r
   
    try:
        mails_count = check_mails(path_input, path_output, refresh)
        print(f'Copied {mails_count} email addresses to the output file.')
        print('Done.')
    except:
        print(f'Sorry, an unexpected error ({sys.exc_info()[1]}) occurred!\nCall filtermails.py -h for help.')
    

Вы можете запустить код с помощью этой простой команды:

$ python filtermails.py -i emails.txt -o fakeEmails.txt -r

Код хранится в файле с именем FilterMails.py Отказ Первый аргумент Emails.txt Это файл адресов электронной почты, один адрес электронной почты на строку. Второй аргумент – fakeemail.txt Какой выходной файл, где хранятся все поддельные электронные письма.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Оригинал: “https://blog.finxter.com/python-freelancing-fiverr-gig-webscraping/”