Python trích xuất số điện thoại và địa chỉ email

Tìm hiểu cách loại bỏ ID email và số điện thoại khỏi một URL trang web nhất định bằng Python bằng thư viện yêu cầu

Trích xuất/Xoá chi tiết liên hệ từ một trang web theo cách thủ công rất dễ dàng, nhưng nếu có hàng trăm hoặc hàng nghìn URL của trang web thì việc cạo các chi tiết này rất tốn thời gian. Tuy nhiên, bằng cách sử dụng tập lệnh python, tất cả hàng nghìn URL này có thể được loại bỏ trong vòng vài phút

Trong hướng dẫn này, bạn sẽ tạo tập lệnh quét số điện thoại và email sao cho khớp với mẫu email và số điện thoại với các biểu thức chính quy trên trang web đã cho. Nếu mẫu khớp thì tất cả email và số điện thoại sẽ bị loại bỏ. Vậy hãy bắt đầu

Bước 1. Tạo tập tin python

Tạo một tệp python mới với tên email_phone_scrap. py và nhập tất cả các thư viện cần thiết. Làm cho chương trình của bạn trông giống như sau

# email_phone_scrap.py - Scrap email and phone number from given websites.

import csv  # for reading/writing in CSV file
import re   # for regular expressions
import requests  # for opening web page

Bước 2. Tạo biểu thức chính quy cho số điện thoại

Trước tiên, bạn cần tạo một biểu thức chính quy để tìm kiếm số điện thoại. Thông thường, số điện thoại được chia thành ba phần, mã vùng, ba chữ số và bốn chữ số có dấu phân cách, ví dụ: 122-456-7890. Các biểu thức chính quy sẽ là

Mẫu điện thoại Biểu thức chính quyMã vùng [có thể có hoặc không có][\d{3}. \[\d{3}\]]?Dấu phân cách [- hoặc. ] [có thể có hoặc không có][\s. -. \. ]?3 chữ số đầu tiên[\d{3}]Dấu phân cách[\s. -. \. ]4 chữ số cuối[\d{4}]Phần mở rộng [nếu có][\s*[ext. x. mở rộng. ]\s*[\d{2,5}]]?

Hãy kết hợp nó lại với nhau để tạo biểu thức chính quy cho số điện thoại

# email_phone_scrap.py - Scrap email and phone number from given websites.

import csv  # for reading/writing in CSV file
--snip--

# Create phone number regular expression
phone_regex = re.compile[r'''[
                        [\d{3}|\[\d{3}\]]?
                        [\s|-|\.]?
                        [\d{3}]
                        [\s|-|\.]
                        [\d{4}]
                        [\s*[ext|x|ext.]\s*[\d{2,5}]]?]''', re.VERBOSE]

Ghi chú. Ở đó. VERBOSE được sử dụng để viết bình luận trong các biểu thức chính quy

Bước 3. Tạo biểu thức chính quy cho ID email

Tiếp theo, bạn cần tạo một biểu thức chính quy để khớp với mẫu ID email. Email được chia thành bốn phần là tên người dùng, biểu tượng @, tên miền và dấu chấm bằng một cái gì đó, ví dụ: contact@kushalstudy. com

Mẫu email Biểu thức chính quyTên người dùng[a-zA-Z0-9. _%+-]+@ biểu tượng@Tên miền[a-zA-Z0-9. -]+Dấu chấm và một cái gì đó [\. [a-zA-Z]{2,4}]

Hãy cùng nhau tạo regex cho id email

# email_phone_scrap.py – Scrap email and phone number from given websites.

import csv  # for reading/writing in CSV file
--snip—

# Create phone regular expression
phone_regex = re.compile[r'''[
--snip--

# Create email id regular expression
email_regex = re.compile[r'''[
                        [a-zA-Z0-9._%+-]+
                        @
                        [a-zA-Z0-9.-]+
                        [\.[a-zA-Z]{2,4}]]''', re.VERBOSE]

Bước 4. Đọc URL từ tệp CSV

Tạo một tệp CSV mới với tên website_urls. csv và đặt tất cả các URL của trang web vào cột A. Lưu trữ tệp CSV này trong cùng thư mục chứa email_phone_scrap. py đã được lưu

Tiếp theo, tạo mã python để đọc URL từ tệp CSV. Thêm mã sau vào email_phone_scrap. py

# email_phone_scrap.py – Scrap email and phone number from given websites.

import csv  # for reading/writing in CSV file
--snip—

# Create phone number regular expression
phone_regex = re.compile[r'''[
--snip--

# Create email id regular expression
email_regex = re.compile[r'''[
--snip--

# Open URLs from CSV file and 
with open["website_urls.csv"] as csv_file:
    csv_reader = csv.reader[csv_file, delimiter=',']    
    
    for row in csv_reader:
        page_url = row[0]        
        print["Opening URL:", page_url]        
        page_data = requests.get[page_url]
        page_html = str[page_data.content]

Bước 5. Tìm tất cả các số điện thoại và email

Bây giờ trang web được mở. Sử dụng mã biểu thức chính quy được tạo ở trên để tìm tất cả các số điện thoại và email

# email_phone_scrap.py – Scrap email and phone number from given websites.

import csv  # for reading/writing in CSV file
--snip--

# Create phone number regular expression
phone_regex = re.compile[r'''[
--snip--

# Create email id regular expression
email_regex = re.compile[r'''[
--snip--

# Open URLs from CSV file and 
with open["website_urls.csv"] as csv_file:
--snip--
        matches = []
        for groups in phone_regex.findall[page_html]:
            phone_numbers = '-'.join[[groups[1], groups[3], groups[5]]]
            if groups[8] != '':
                phone_numbers += ' x' + groups[8]            
            matches.append[phone_numbers]    
        
        for groups in email_regex.findall[page_html]:
            matches.append[groups[0]]
        
        print['\n'.join[matches]]

Mã nguồn hoàn chỉnh sẽ trông như thế này

# email_phone_scrap.py - Scrap email and phone number from given websites.

import csv  # for reading/writing in CSV file
import re   # for regular expressions
import requests  # for opening web page

# Create phone number regular expression
phone_regex = re.compile[r'''[
                        [\d{3}|\[\d{3}\]]?
                        [\s|-|\.]?
                        [\d{3}]
                        [\s|-|\.]
                        [\d{4}]
                        [\s*[ext|x|ext.]\s*[\d{2,5}]]?]''', re.VERBOSE]

# Create email id regular expression
email_regex = re.compile[r'''[
                        [a-zA-Z0-9._%+-]+
                        @
                        [a-zA-Z0-9.-]+
                        [\.[a-zA-Z]{2,4}]]''', re.VERBOSE]

# Open URLs from CSV file and 
with open["website_urls.csv"] as csv_file:
    csv_reader = csv.reader[csv_file, delimiter=',']    
    
    for row in csv_reader:
        page_url = row[0]        
        print["Opening URL:", page_url]
        page_data = requests.get[page_url]

        # Convert byte data to a string
        page_html = str[page_data.content]        
        
        matches = []
        for groups in phone_regex.findall[page_html]:
            phone_numbers = '-'.join[[groups[1], groups[3], groups[5]]]
            if groups[8] != '':
                phone_numbers += ' x' + groups[8]            
            matches.append[phone_numbers]            

        for groups in email_regex.findall[page_html]:
            matches.append[groups[0]]
        
        print['\n'.join[matches]]

Bước 6. Chạy chương trình

Để đơn giản, chúng tôi chỉ đặt một URL trong tệp CSV. Khi bạn chạy chương trình này, đầu ra sẽ giống như bên dưới

Opening URL: //nostarch.com/contactus/
-010-4093
800-420-7240
415-863-9900
415-863-9950
support@nostarch.com
academic@nostarch.com
sales@nostarch.com
conferences@nostarch.com
errata@nostarch.com
support@nostarch.com
academic@nostarch.com
sales@nostarch.com
conferences@nostarch.com
errata@nostarch.com
info@nostarch.com
media@nostarch.com
editors@nostarch.com
rights@nostarch.com
support@nostarch.com
academic@nostarch.com

Phần kết luận

Mã này trích xuất số điện thoại và ID email từ URL đã cho. Bạn có thể đặt bất kỳ số lượng URL nào để trích xuất thông tin này. Nếu có sự thay đổi về định dạng của số điện thoại như không có – dấu phân cách thì có thể dễ dàng đạt được. Để đơn giản, đầu ra được in trên bảng điều khiển thay vì lưu trong tệp CSV, nhưng có thể thực hiện dễ dàng để lưu dữ liệu đã loại bỏ trong CSV hoặc bất kỳ loại tệp nào khác

Làm cách nào để trích xuất số điện thoại bằng RegEx?

Và chúng ta có thể sử dụng Công cụ RegEx trong Octopude để trích xuất nhanh chóng tất cả các số điện thoại. Bước 1. Chạy Octoparse và mở Công cụ RegEx. .
[021]1234567
[123] 456 7899
[123]. 456. 7899
[123]-456-7899
123-456-7899
123 456 7899
1234567899
0511-4405222

Làm cách nào để trích xuất số từ tệp văn bản trong Python bằng biểu thức chính quy?

Python Regex – Lấy danh sách tất cả các số từ chuỗi. Để lấy danh sách tất cả các số trong Chuỗi, sử dụng biểu thức chính quy '[0-9]+' với re. phương thức findall[] . [0-9] đại diện cho một biểu thức chính quy để khớp với một chữ số trong chuỗi.

Chủ Đề