Extract email information from webpages/URLs using Matlab

1 回表示 (過去 30 日間)
Gobert
Gobert 2021 年 6 月 13 日
コメント済み: Gobert 2021 年 6 月 14 日
Hi,
I do need your help. When I run the code, K gives 143 empty cells. In other words, K does not contain any email. I tried this with other websites that show emails on some pages but in vain (K always gave empty cells). Therefore, can you please help to find what is wrong with or where I am screwing things up in the following code? I want to write a code that is capable of checking each L page of the main H website and extract emails according to the expression E.
H = webread("https://edition.cnn.com");
L = regexp(H,'https?://[^"]+','match')';
E ='[a-zA-Z0-9._%''+-]+@([a-zA-Z0-9._-])+\.([a-zA-Z]{2,4})';
K = regexpi(L,E,'match')';

採用された回答

Image Analyst
Image Analyst 2021 年 6 月 13 日
編集済み: Image Analyst 2021 年 6 月 13 日
Looks like L is a cell array of web sites, none of which is an email address with @ in it. So why do you think it should find an email there? Try searching H instead:
K = regexpi(H,E,'match')';
That will give you email addresses.
% Retrieve a web page.
%url = 'https://www.mathworks.com/matlabcentral/answers/?term=';
url = 'https://edition.cnn.com';
webPageContents = webread(url);
% Harvest web sites listed in the page.
listOfWebSites1 = regexp(webPageContents,'https?://[^"]+','match')';
listOfWebSites2 = regexp(webPageContents,'https?://[^"]+','match')';
% Throw out duplicates:
listOfWebSites = unique([listOfWebSites1;listOfWebSites2])
% Harvest email addresses listed in the page.
reForEMailAddresses ='[a-zA-Z0-9._%''+-]+@([a-zA-Z0-9._-])+\.([a-zA-Z]{2,4})';
listOfEMails = regexpi(webPageContents,reForEMailAddresses,'match')';
% Throw out duplicates:
listOfEMails = unique(listOfEMails)
  5 件のコメント
Image Analyst
Image Analyst 2021 年 6 月 14 日
You could just go through each web site found on the main web site and scan each of those web sites for emails:
reForEMailAddresses ='[a-zA-Z0-9._%''+-]+@([a-zA-Z0-9._-])+\.([a-zA-Z]{2,4})';
for k = 1 : length(listOfWebSites)
thisWebSite = listOfWebSites{k};
webPageContents = webread(thisWebSite);
% Harvest email addresses listed in the page.
listOfEMails = regexpi(webPageContents, reForEMailAddresses, 'match')';
% Throw out duplicates:
listOfEMails = unique(listOfEMails)
end
Is that what you want?
Gobert
Gobert 2021 年 6 月 14 日
Yes, it is. Thank you!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeWeb Services についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by