英語翻訳をスクレイピングで自動化

#はじめに 

初めての投稿。

初めて2か月たつけど、ネット上の２，３か月勉強してる人たちとの差に愕然。自分は自分と思って頑張っています。

独学じゃコードの良し悪しがわからないので添削してもらいてくて投稿。

ブログも初めて書くので読みにくいとこはご勘弁。

見てくれた人で添削があったらどしどし、お願いします。

#学習テーマ

１．スクレイピングの理解と使用。
２．CSV出力の理解と使用。
３．英文翻訳の手助け。

#使用するライブラリ
```honyaku.py
import requests
import lxml.html
import csv
import time
```
今回は、requestsを使ってサイト情報を取得。
lxmlで解析してそれをｃｓｖに出力してみます。

#対象の英文の整形

今回は英文を丸々翻訳ではなく、英文内の単語一つ一つを翻訳してリスト化。

```honyaku.py
s = input('sentens;')
word_split = s.split(' ')

deleat = ["java","this","I","is","programming","code",\
    "you","very","your","C","in","to","C++",\
        "get","a","an","years","with","I`m","computer","my"\
            "and",]

new_list = []
gomi = []
for i in word_split:
    if i.isdecimal():
        n.append(i)
    elif i not in deleat:
        if i not in new_list:
           new_list.append(i)
```
英文をinputで取得してリスト化。
知ってる訳を調べるのが無駄に感じたので、まずは自分で調べる必要がないと思ったものをリスト化。

空のリストを2つ作成。
英文に数字が入ってた場合を考慮していらない数字はゴミ箱にいれます。数字か判定するメソッドは多々みつかったため適当に選択。

そして最初のリストから自分の翻訳したい単語のみをリストに追加していきました。

#本命のスクレイピング
```honyaku.py
for k in new_list:
    req = requests.get('＊＊＊＊＊＊＊＊＊＊'+k)
    html = lxml.html.fromstring(req.text)
    
    link = html.xpath('＋＋＋＋＋＋＋＋＋')
    lengs = len(link)
    if lengs != 0:
        xpath_list.append(link[0].text)
    else:
        xpath_list.append('------')
    word_list.append(k)
    time.sleep(1)
```

変数名はいろんなサイトをみてたときに見つけてきたものを引用。
または、創作してるので指摘とうあればどしどしください。

for文のところは、特に意味もなくkにしました。

サイトの利用規約をあまり見てないため、サイト先のURLは伏せます。（笑）

スクレイピングについての規約はなかったためそこに関しては、大丈夫です。

#####コードの解説

最初にサイト先に検索ワードをひっかけたときのURLの変化を見ました。私の使ったサイトではURLの最後に検索ワードが入ってたので、先ほど整形したリストから単語を一つ一つfor文により追加して、検索。＊＊＊＊＊＊＊＊＊＊はURLです。

それをlxmlで解析。
butifullsoupではエラーがたくさんでたため断念。なにかでまた再挑戦します。

今回は単語の意味をしりたっかたのでそこをグーグルクロームのシステムでxpathを取得して貼り付けました。
＋＋＋＋＋＋＋＋＋はxpathです。

このコードの最後で英文の中の固有名詞を取り除きます。
具体的には、スクレイピングで持ってきたものが存在するかどうかをlenを使って判定。ここで取り除いた値をリストに収納。
ｃｓｖ出力の時にずれないようにスクレイピングで持ってこれなかった値を伏字にしてリストにいれてあげます。

最後に出力用に翻訳した英語もリスト化して長文が長すぎたときを考慮した結果、あまりたくさんrequestsするのもよろしくなさそうなのでtime.sleep(1)を入れておきます。

#csvに出力
```honyaku.py
with open('word.csv','w',newline = '',encoding = 'cp932')as f:
    csvwriter = csv.writer(f)
    csvwriter.writerow(['english','日本語'])
    point = 0
    for i in word_list:
        english_word = i
        
        japanese_word = xpath_list[point]
        point = point +1
        csvwriter.writerow([english_word, japanese_word])
    
```
日本語がつかわれてたらutf-8じゃ動かないと聞いたのでcp932を使用。
デフォルトで'english','日本語'とcsvの一番上に記入。
この下に、ここまでで作ったリストを順番に記入していきます。

書き方がわからなかったため、pointという値を作り、無理やりいれていきました。

ここら辺もっとうまくできたらよかった、、、。

#コード全文
```honyaku.py
import requests
import lxml.html
import csv
import time

s = input('sentens;')
word_split = s.split(' ')

deleat = ["java","this","I","is","programming","code",\
    "you","very","your","C","in","to","C++",\
        "get","a","an","years","with","I`m","computer","my"\
            "and",]

new_list = []
gomi = []
for i in word_split:
    if i.isdecimal():
        n.append(i)
    elif i not in deleat:
        if i not in new_list:
           new_list.append(i)

for k in new_list:
    req = requests.get('＊＊＊＊＊＊＊＊＊＊'+k)
    html = lxml.html.fromstring(req.text)

    link = html.xpath('＋＋＋＋＋＋＋＋＋')
    lengs = len(link)
    if lengs != 0:
        xpath_list.append(link[0].text)
    else:
        xpath_list.append('------')
    word_list.append(k)
    time.sleep(1)

with open('word.csv','w',newline = '',encoding = 'cp932')as f:
    csvwriter = csv.writer(f)
    csvwriter.writerow(['english','日本語'])
    point = 0
    for i in word_list:
        english_word = i

        japanese_word = xpath_list[point]
        point = point +1
        csvwriter.writerow([english_word, japanese_word])
```
ここにコード全文を記します。

コードの順番や書き方、または変数名など些細なことでもご指摘があれば、よろしくお願いします。