Как непрерывно очищать веб-страницы с помощью python selenium, используя списки URL в CSV-файле - PullRequest
0 голосов
/ 12 мая 2019

Мне нужно знать, как записывать в Интернет с помощью CSV-файла. У меня есть файл с названием «название компании», «URL-адрес домашней страницы», «адрес» и т. Д.

Я должен сделать следующее:

  1. Удаление «контактного адреса (электронной почты)» с использованием списка URL-адресов домашней страницы компании.
  2. Сохранить как CSV-файл.

Я пытался использовать панд, библиотеку селена. Удаление одного адреса электронной почты с одного URL-адреса прошло успешно.

Вот проблема:

  1. Каждая домашняя страница имеет различную структуру HTML
  2. Не могу найти способ слома постоянно (для -? пока -?)

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете использовать библиотеку Python csv для разбора вашего файла за раз и beautifulsoup для разбора HTML.От вашего вопроса ваш URL будет во втором столбце (то есть row[1]).При этом вы можете использовать библиотеку requests для захвата HTML-кода и BeautifulSoup для анализа всех строк.

Затем вам нужно будет использовать регулярное выражение, чтобы попытаться определить адреса электронной почты внутри текста.Простой поиск python email regular expression должен дать вам любое количество возможных решений.

Далее, для всех найденных писем напишите их в виде строки в выходной CSV-файл:

from bs4 import BeautifulSoup
import requests
import csv
import re

with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)

    for row in csv_input:
        if row:
            company = row[0]
            url = row[1]
            print(f'Getting "{company}"')

            req = requests.get(url)
            soup = BeautifulSoup(req.content, 'html.parser')

            for text in soup.stripped_strings:
                emails = re.findall(r'\b([A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*)\b', text)

                if emails:
                    csv_output.writerow([company, *emails])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...