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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

512閲覧

python スクレイピング

cristobal_923

総合スコア18

スクレイピング

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/07/01 23:32

編集2019/07/02 14:18

pythonとbeautifulsoupでのスクレイピングについての質問です。
求人情報をスクレイピングしていきたいのですが、タイトル(業種、項目)とサラリー(値段)
を一つとしてまずはコマンドに出力させたいです。
しかし現状の書き方だとエラーが出てしまいます。

from

1import requests 2result=requests.get('https://www.indeed.com.mx/jobs?q=ingeniero&l=irapuato') 3soup=BeautifulSoup(result.text,'html.parser') 4title_html_list=soup.find_all('div', class_='title' ) 5title_html_list_salary=soup.find_all('div',class_="salarySnippet salarySnippetDemphasize") 6 7for title_html , salary in title_html_list , title_html_list_salary : 8 name= title_html.a.get_text() 9 salario=salary.get_text() 10 print(name,salario) 11 12コード

これをコマンド実行
すると
line 8, in <module>
for title_html , salary in title_html_list , title_html_list_salary :
ValueError: too many values to unpack (expected 2)

となります。そもそもこの
ValueError: too many values to unpack (expected 2)
というエラーが出るので変数に代入して2つを出力しようと試みたのですができません。
なぜでしょうか??

ちなみに二つのリストを分けて出力させれば
from bs4 import BeautifulSoup
import requests
result=requests.get('https://www.indeed.com.mx/jobs?q=ingeniero&l=irapuato')
soup=BeautifulSoup(result.text,'html.parser')
title_html_list=soup.find_all('div', class_='title' )
title_html_list_salary=soup.find_all('div',class_="salarySnippet salarySnippetDemphasize")

for title_html in title_html_list :
name= title_html.a.get_text()
print(name)

for list_salary in title_html_list_salary :
salary=list_salary.get_text()
print(salary )
問題なしに出力されます。

初歩的な課題なのでしょうが、調べてもわからないので教えていただけると嬉しいです。
よろしくお願いします。

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

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

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

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

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

yodel

2019/07/02 01:42

後から見た人が分かりやすいように 解決済みであっても質問内容のソースコード表示はしていただけるとたすかります。
guest

回答1

0

ベストアンサー

複数のリストを並行して巡回したいのであれば、zipを使って下さい。

Python

1for title_html, salary in zip(title_html_list, title_html_list_salary): 2 ...

そもそも ... 変数に代入して2つを出力しようと試みたのですができません。

なぜでしょうか??

次のように書いているのと動作は同じだからです。

Python

1tpl = (title_html_list, title_html_list_salary) 2 3for e in tpl: 4 # print(type(e), len(e)) 5 title_html, salary = e

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
Python

特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。

投稿2019/07/01 23:35

編集2019/07/01 23:38
LouiS0616

総合スコア35660

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

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

cristobal_923

2019/07/01 23:42

あっという間にできました。 さらにコードの書き方も教えていただきありがとうございます。 貴重な情報をありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問