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