私は美しいスープを扱っていて、私のウェブスクレイパーで私が選んだ深みまでメールを取りたいと思っています。現在のところ、私のウェブスクレイピングツールが動作していない理由はわかりません。私はそれを実行するたびに、それは電子メールのリストに値を設定しません。美味しいスープに電子メールを取り込む方法は?
#!/usr/bin/python
from bs4 import BeautifulSoup, SoupStrainer
import re
import urllib
import threading
def step2():
file = open('output.html', 'w+')
file.close()
# links already added
visited = set()
visited_emails = set()
scrape_page(visited, visited_emails, 'https://www.google.com', 2)
print('Webpages \n')
for w in visited:
print(w)
print('Emails \n')
for e in visited_emails:
print(e)
# Run recursively
def scrape_page(visited, visited_emails, url, depth):
if depth == 0:
return
website = urllib.urlopen(url)
soup = BeautifulSoup(website, parseOnlyThese=SoupStrainer('a', email=False))
emails = re.findall(r"[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}", str(website))
first = str(website).split('mailto:')
for i in range(1, len(first)):
print(first.split('>')[0])
for email in emails:
if email not in visited_emails:
print('- got email ' + email)
visited_emails.add(email)
for link in soup:
if link.has_attr('href'):
if link['href'] not in visited:
if link['href'].startswith('https://www.google.com'):
visited.add(link['href'])
scrape_page(visited, visited_emails, link['href'], depth - 1)
def main():
step2()
main()
何らかの理由で私のコードを修正してメールをリストに追加する方法が不明です。もしあなたが私に助言を与えることができれば、それは大いに感謝されるでしょう。あなただけのmailtoでHREFさんを探すために必要なおかげ
'str(ウェブサイト)'を表示してチェックしてください - テキストにメールがないかもしれません - あなたはボットが好きではないgoogleをスクラップしています: – furas
なぜ正規表現を使用していますか? –
@furas googleは単なるテスト例でした。ウェブサイトのいくつかの理由なしのために、私は、それはそれほどあなたが言っていた電子メール –