• Skip to main content
  • Skip to primary sidebar

学習記録

スクレイピング

画像のスクレイピング(sslの場合)

2022年9月3日 by 河副 太智 Leave a Comment

画像のスクレイピング(sslの場合)

1
2
3
4
5
6
7
8
9
import io
import ssl
from urllib import request
 
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
 
item_image = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/180px-Cat03.jpg"
    
f = io.BytesIO(request.urlopen(item_image,context=context).read())

しかしなぜか以下のエラーが出てしまう理由は不明

C:\Users\xxx\AppData\Local\Temp\ipykernel_16388\4181980830.py:5: DeprecationWarning: ssl.PROTOCOL_TLSv1_2 is deprecated
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

 

応用例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#国名+hs6桁のフォルダ名を設定
check_folder_exsist = glob.glob("E:\\rulings_img/" + HS_jsonData)
if not check_folder_exsist:
    os.mkdir("E:\\rulings_img/" + HS_jsonData)
 
 
for g in range(image_amount):
    try:  
        driver.find_element(By.XPATH, "//*[@id=\"dtlLayer\"]/div[4]/table/tbody/tr[9]/td/span[" + str(g+1)+ "]/a/img")
        time.sleep(1)
    except Exception as e:
        print("画像取得エラー発生divの値を5に変更:", e.args)
        driver.driver.find_element(By.XPATH, "//*[@id=\"dtlLayer\"]/div[5]/table/tbody/tr[9]/td/span[" + str(g+1)+ "]/a/img")
 
    item_image = driver.find_element(By.XPATH, "//*[@id=\"dtlLayer\"]/div[4]/table/tbody/tr[9]/td/span[" + str(g+1)+ "]/a/img").get_attribute("src")
 
 
    #画像の取得
    try:
        f = io.BytesIO(request.urlopen(item_image,context=context).read())
    except:
        print(">>>>>>>画像取得リトライ<<<<<<<<")
        time.sleep(10)
        f = io.BytesIO(request.urlopen(item_image,context=context).read())
 
    #3回トライしても画像取得できない場合はNONEにする
    for image_loop in range(3):
        try:    
            img = Image.open(f)
 
            img_name = "E:\\rulings_img/" + HS_jsonData + "/" + link_id + "-" + str(g+1) + ".jpg"
 
            #画像保存時にRGBはjpgに変換できないというエラーを防ぐ
            try:
                img.save(img_name)
            except:
                print("imgで保存できない為rgbに変換")
                rgb_img = img.convert('RGB')
                rgb_img.save(img_name)
 
 
            #画像が2件以上あれば画像名と画像URLをカンマ区切りで取得
            if g > 0:
                item_image_urls = item_image_urls + "," + item_image
                img_name_all = img_name_all + ","+ img_name
            else:
                item_image_urls = item_image
                img_name_all = img_name
            break
        except:
            print("3秒停止")
            time.sleep(3)
    else:
        item_image_urls = "None"
        img_name_all = "None"
        image_amount = 0
        break
else:
item_image_urls = "None"
img_name_all = "None"  
image_amount = 0

 

 

 

Filed Under: スクレイピング

Googleトランスで翻訳

2022年9月1日 by 河副 太智 Leave a Comment

Googleトランスにおいては謎のエラーが発生してうまく動かなかったが、
google_trans_newを使用してから翻訳できるようになった。

①pip install google-trans-new
でインストール

➁C:\Users\xxx\AppData\Local\Programs\Python\Python310\Lib\site-packages\google_trans_newを開く

enter image description here

③151行目のresponse = (decoded_line + ‘]’) を
response = decoded_lineに変える

④以下のコードを実行

1
2
3
4
from google_trans_new import google_translator
translator = google_translator()  
translate_text = translator.translate('요소로',lang_tgt='en')
print(translate_text)

これでgoogle翻訳が使用可能になった2022/9/1現在

Filed Under: python3, スクレイピング

ChromeDriverのバージョンエラー

2020年11月15日 by 河副 太智 Leave a Comment

Google chromeのバージョンが変わると
“This version of ChromeDriver only supports Chrome version xx”
というエラーが出るようになる。

この場合はchromeのブラウザからヘルプ→google chromeについてをクリック
して現在のバージョンを確認する。
このバージョンとchromedriver-binaryのバージョンが異なるので
エラーがでるという事になる。

以下のページからブラウザから表示したバージョンと同じバージョンの
数字を確認する。
http://chromedriver.chromium.org/downloads

例えばブラウザで確認したバージョンが86.0.4240.198であれば
http://chromedriver.chromium.org/downloadsのページでは
86.0.4240.22がダウンロードすべきバージョンとなる。
(頭2桁が同じものを探す)

このダウンロードすべきバージョンを以下のように指定して
インストールする。

pip install chromedriver-binary==86.0.4240.22

Filed Under: スクレイピング

TOR proxyを利用してseleniumスクレイピング

2020年3月18日 by 河副 太智 Leave a Comment

proxy経由でスクレイピングをする際はまずTORブラウザーをダウンロードする
ダウンロード

TORブラウザを起動させて右上の設定ボタンから
Option→Tor

Advancedの設定

SOCKS 5 → 127.0.0.1 → 9150と入力

TORブラウザを起動させたままプログラムを実行

1
2
3
4
5
6
7
8
9
10
11
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:9150")
driver = webdriver.Chrome(options=chrome_options)
# driver = webdriver.Chrome(executable_path='ChromeDriverPath', chrome_options=options)
driver.get("http://icanhazip.com/")
print(driver.page_source)
driver.close()

上記のコードで自分のPCと異なるIPアドレスが出てくれば準備OK
例:<html xmlns=”http://www.w3.org/1999/xhtml”><head></head><body><pre style=”word-wrap: break-word; white-space: pre-wrap;”>45.14.148.96</pre></body></html>

 

↓googleをスクレイピング

1
2
3
4
5
6
7
8
9
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
chrome_options = Options()
chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:9150")
driver = webdriver.Chrome(options=chrome_options)
 
driver.get("http://google.com")
driver.close()

↓タイムアウトに対応

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
 
chrome_options = Options()
chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:9150")
driver = webdriver.Chrome(options=chrome_options)
 
driver.get("http://google.com")
time.sleep(2)
 
 
i = 0
 
while i < 100:
    try:
        time.sleep(10)
        search_box = driver.find_element_by_id("TOPMENU_LNK_M_ULS0200000000")
        print("見つかったのでブレイク")
        break
        
    except:
        i = i + 1
        print("再度トライ" + str(i) + "回目")
        driver.get("http://google.com")
        time.sleep(2)
 
        continue
        
driver.close()

 

Filed Under: スクレイピング

EUから画像をスクレイピング

2020年1月10日 by 河副 太智 Leave a Comment

EUのページから画像URLをスクレイピングをしたいのだが
上記検索結果画面のソースには画像URLが無い為直接の取得ができない。

フレームかと思いきやJava Scriptで画像を表示している事がわかった
のでソースから”.jsp”の文字列を探して
var link = new url(“ebti_list.jsp”);
が画像一覧を生成するJavaScriptタグである事を発見する

そこでBeautifulSoupにて以下のコードを実行する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests
from bs4 import BeautifulSoup as BS
 
# create session to keep cookies
s = requests.Session()
 
# load original page to get cookies    
url = 'https://ec.europa.eu/taxation_customs/dds2/ebti/ebti_consultation.jsp?Lang=en&Lang=en&refcountry=&reference=&valstartdate=&valstartdateto=&valenddate=&valenddateto=&suppldate=&nomenc=3824&nomencto=&keywordsearch1=&keywordsearch=&specialkeyword=&keywordmatchrule=OR&descript=&orderby=4&Expand=true&offset=1&viewVal=Thumbnail&isVisitedRef=false&allRecords=0&showProgressBar=true'
r = s.get(url)
 
# load page with thumbnails
url = 'https://ec.europa.eu/taxation_customs/dds2/ebti/ebti_list.jsp?viewVal=Thumbnail&Lang=en&offset=1&allRecords=0&nomenc=3824&orderby=4&keywordmatchrule=OR&isVisitedRef=false&random=8377162'
r = s.get(url)
soup = BS(r.text, 'html.parser')
 
all_items = soup.find_all('img')
for item in all_items:
    print(item['src'])

これにより全ての画像URLを取得

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18403-19-1_thumbnail104.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18403-19-1_thumbnail105.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18403-19-1_thumbnail106.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18403-19-1_thumbnail107.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18349-19-1_thumbnail625.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18349-19-1_thumbnail626.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18349-19-1_thumbnail627.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI18349-19-1_thumbnail628.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/GB/GBBTI503986041_thumbnail4.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/GB/GBBTI503986041_thumbnail5.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/GB/GBBTI503986041_thumbnail6.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI35762-19-1_thumbnail1.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI35762-19-1_thumbnail2.jpeg
https://ec.europa.eu/taxation_customs/dds2/ebti/imagesLocation/DE/DEBTI35762-19-1_thumbnail3.jpeg

 

以下の動画でjavascriptを外して表示するとどうなるかをchromeの検証で
調べる方法がある

Filed Under: スクレイピング

cross HS 全文検索

2017年12月18日 by 河副 太智 Leave a Comment

クエリ

https://rulings.cbp.gov/index.asp?p=1&qu=%2ANY+OR+%2AHQ&p=1

Filed Under: スクレイピング Tagged With: cross, hs, 事前教示

  • Page 1
  • Page 2
  • Go to Next Page »

Primary Sidebar

カテゴリー

  • AWS
  • Bootstrap
  • Dash
  • Django
  • flask
  • GIT(sourcetree)
  • Plotly/Dash
  • VPS
  • その他tool
  • ブログ
  • プログラミング
    • Bokeh
    • css
    • HoloViews
    • Jupyter
    • Numpy
    • Pandas
    • PosgreSQL
    • Python 基本
    • python3
      • webアプリ
    • python3解説
    • scikit-learn
    • scipy
    • vps
    • Wordpress
    • グラフ
    • コマンド
    • スクレイピング
    • チートシート
    • データクレンジング
    • ブロックチェーン
    • 作成実績
    • 時系列分析
    • 機械学習
      • 分析手法
      • 教師有り
    • 異常値検知
    • 自然言語処理
  • 一太郎
  • 数学
    • sympy
      • 対数関数(log)
      • 累乗根(n乗根)
    • 暗号学

Copyright © 2025 · Genesis Sample on Genesis Framework · WordPress · Log in