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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

699閲覧

python スクレイピング複数結果をエクセルに書き込む。

cristobal_923

総合スコア18

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/11/17 21:49

編集2019/11/17 23:38

すみません。とても初歩的なのかもしれませんが、分からないので質問させていただきます。
スクレイピングして結果をエクセルに書くつもりだったのですが、rowとcolumnを指定すると複数の結果のはずなのにもかかわらず、結果が一つしか記入されません。for文を用いているので繰り返しがされていると思っていたのですが。
色々試したのですが、無記入になってしまったりエラーとなったりでうまくいきません。
他人のコードを参考にしようと思いましたが難しくてまだ解読ができるレベルではありません。

import requests,openpyxl from bs4 import BeautifulSoup wb=openpyxl.Workbook() wa=wb.active 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() wa.cell(row=1,column=1).value=name wb.save(r'C:\Users*****\Desktop\practica\sample.xlsx')

コマンド上で出力するとたくさんの結果が出るのですが、エクセルにかけません。

ご教示いただけると幸いです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

毎回(row, col) = (1, 1)に書き込んでしまっているのが問題のようですね。インデックスを作るためにenumerateを使う例を下に書きました。エクセル側のインデックスが1始まりであることにちょっとだけ注意してください。

python

1... 2for (idx, title_html) in enumerate(title_html_list, 1) : 3 name= title_html.a.get_text() 4 wa.cell(row=idx,column=1,value=name)

投稿2019/11/17 23:17

編集2019/11/17 23:51
tachikoma

総合スコア3601

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

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

cristobal_923

2019/11/17 23:37

すいません。抜けました。 はい記述しております wb.save(r'C:\Users*****\Desktop\practica\sample.xlsx')
cristobal_923

2019/11/18 13:55

できました。大変ありがとうございます!1 なかなかenumerateの理解に苦しんでおります。 ちなみにidxが1というのはexcelのrowのことなのでしょうか? idxを2にして実験してみました。そしたらrow2から記入が始まりましたが、ほかにも盛り込んでみた要素(同じfor文を使用してcolumn指定を変えた)が記入されませんでした。 すみませんまだ試し中ですので何とも言えません。 ご教示本当にありがとうございました。
tachikoma

2019/11/19 00:48

> ちなみにidxが1というのはexcelのrowのことなのでしょうか? その通りです。 > (同じfor文を使用してcolumn指定を変えた)が記入されませんでした。 ちょっと問題が分からないので、必要でしたらまた質問してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問