私は非常にプログラミングに新しいので、私の質問があまりにも些細な場合appologise。 私は最近「Intro to Computer Science」、「Pythonプログラミング基礎」などいくつかのUdacityコースを受講しました。このコードを改善するにはどうしたらいいですか?
私の上司は、特定のウェブサイトからいくつかのメールアドレスを収集するように私に依頼しました。その中には同じページに複数のアドレスがあるものがあるので、ベルが鳴ったので、自分のコードを作成して電子メールを収集し、スプレッドシートに貼り付けるという繰り返し作業を行うことを考えていました。
だから、これらのコルのレッスンとyoutubeのいくつかのビデオを見直した後、私はこのコードを思いついた。
注:Python 2.7.12で書かれており、私はUbuntu 16.04を使用しています。
import xlwt
from bs4 import BeautifulSoup
import urllib2
def emails_page2excel(url):
# Create html file from a given url
sauce = urllib2.urlopen(url).read()
soup = BeautifulSoup(sauce,'lxml')
# Create the spreadsheet book and a page in it
wb = xlwt.Workbook()
sheet1 = wb.add_sheet('Contacts')
# Find the emails and write them in the spreadsheet table
count = 0
for url in soup.find_all('a'):
link = url.get('href')
if link.find('mailto')!=-1:
start_email = link.find('mailto')+len('mailto:')
email = link[start_email:]
sheet1.write(count,0,email)
count += 1
wb.save('This is an example.xls')
コードはうまく動作し、非常に高速です。しかし、私はこれらの方法でそれを改善したいと思います:
- は私がforループよりエレガント の方法で行うことができる感覚を得ました。文字列検索以外の電子メールを探す方法はありますか?同様の方法で、が見つかりました 'a'タグ?
- 私はこのコードをURL文字列で評価するのではなく、ウェブサイトのリスト(スプレッドシートの可能性が高い)で評価したいと考えています。私はまだこれを行う方法について研究する時間がありませんでしたが、どんな提案も歓迎です。
- 最後に、の親しみやすいミニプログラムのようなものでこのスクリプトを実装する方法があるかどうかを質問したいと思います。例えば、私の上司はコンピュータで全く悪いです。私は彼女がターミナルシェルを開いてPythonコードを実行するとは想像もしません。代わりに、私は彼女がメールを抽出したいウェブサイトを持つスプレッドシートをアップロードしたり、メールやその他の情報を抽出したいのかどうか、さらにいくつかの機能を選択するかどうかを選択するプログラムを作成したいボタンをクリックして結果を取得します。
私は自分自身をはっきりと表現したいと思います。事前に おかげで、
Anqin
http://codereview.stackexchange.com/ – Stedy