質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

668閲覧

Pythonでウェブサイトの検索窓に入力し結果を取ってくるコードのエラー

退会済みユーザー

退会済みユーザー

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2018/01/07 05:22

編集2018/01/09 03:16

###前提・実現したいこと
以下のサイトにJANコードの値を入力して、検索結果のASINコードをスクレイピングして表示することを実行しようとしています。
検索窓に入力するWebサイト

###発生している問題・エラーメッセージ
以下のコードを実行するとこのようなエラーが表示されており、修正のためのアドバイスをいただけますと幸いです。

$ python trial.py --jan 4901351055618 File "trial1.py", line 48 desc = e.get_attribute('textContent') ^ IndentationError: expected an indented block

上記エラーの後、再度インデントを確認設定したところ、
以下のエラーに変わりました。やはり近い部分で問題が起こっているようです

$ python trial.py --jan 4901351055618 File "trial1.py", line 47 for e in elems: ^ IndentationError: unindent does not match any outer indentation level

###該当のソースコード

Python

1#trial.py 2#!/usr/bin/env python 3# -*- coding: utf-8 -*- 4from selenium import webdriver 5from selenium.common.exceptions import NoSuchElementException 6from selenium.webdriver.common.keys import Keys 7from sys import exit 8from time import sleep 9from urllib import urlretrieve 10import argparse 11import datetime 12import requests 13import os 14import urllib2 15#import sqlite3 16import codecs, sys 17 18sys.stdout = codecs.getwriter('utf_8')(sys.stdout) 19sys.stdin = codecs.getreader('utf_8')(sys.stdin) 20 21DELAY_SLEEP = 1 22JANJAN_URL = "https://antlion.xsrv.jp/" 23 24#database name 25#dbname = 'master_data.sqlite3' 26#connect to the database 27#con = sqlite3.connect(dbname) 28#c = con.cursor() 29 30def main(): 31 parser = argparse.ArgumentParser(description='Get asin from JANJAN_URL') 32 parser.add_argument('--jan', nargs='+') 33 args = parser.parse_args() 34 35 products = {} 36 for k,v in produts.iteritems(): 37 driver = webdriver.PhantomJS() 38 try: 39 #get asin 40 driver.get(JANJAN_URL) 41 driver.set_window_size(1920, 1080) 42 driver.implicitly_wait(DELAY_SLEEP) 43 elem = driver.find_element_by_xpath('//*[@id="content"]/div[1]/div/form/input[2]') 44 elem.send_keys(a) 45 elem = driver.find_element_by_xpath('//*[@id="content"]/div[1]/div/form/input[3]') 46 elem.click() 47 elems = driver.find_elements_by_xpath('//*[@id="content"]/div[2]/div[5]/ul/li') 48 for e in elems: 49 desc = e.get_attribute('textContent') 50 if desc.startswith("ASIN"): 51 v['asin'] = desc 52 53 except Exception as e: 54 print e 55 driver.close() 56 exit(1) 57 58 driver.close() 59 60 for v in products.values(): 61 print v['asin'] 62 63if __name__ == "__main__": 64 main()

###補足情報(言語/FW/ツール等のバージョンなど)
Python 2.7.12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

制御文字のせいである可能性が高いです。
スペース、全角スペース、タブを疑ってみてください。

投稿2018/01/07 06:43

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/09 02:53

ご回答いただきましてありがとうございます。 スペース等の制御文字以外の原因である可能性はないということでしょうか。
mkgrei

2018/01/09 03:52

ないとは言い切れませんが、インデントが正しくないというエラーなので。 そして、上記のコードを見る限り、インデントは正しいので、制御文字等々が怪しいと思いました。 よくあるのは、全てスペースだったのに、追加した行だけタブであったりするケースです。 異なるエディタを使用すると見られます。 後は日本語環境があると全角スペースはたまに混じります。
退会済みユーザー

退会済みユーザー

2018/01/09 04:47

追加のご回答をいただきましてありがとうございます。 コードを少し変更してインデント以外のエラーが表示されるようになり、再度他に質問させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問