私は複数のページを取得するWebスクレイピングプログラムを持っていますが、whileループを数値に設定する必要があります。最後のページに到達したらループを停止する条件を作りたい、または掻き取る項目がもうないことを認識したい。私はいくつのページが存在するか分からないと仮定します。どのように乱数を入れずにwhileループ条件を停止するように変更するのですか?私はreplace(","," ")
を使用する必要はありませんので、私はデータを保存するためにモジュールcsv
を使用してもデータBSを使ったPython Web掻き取り
data = soup.select('.result-info')
if not data:
print('END: no data:')
break
が存在しない場合に終了し、無限ループとbreak
を実行するためにwhile True
を使用
import requests
from bs4 import BeautifulSoup
import csv
filename="output.csv"
f=open(filename, 'w', newline="",encoding='utf-8')
headers="Date, Location, Title, Price\n"
f.write(headers)
i=0
while i<5000:
if i==0:
page_link="https://portland.craigslist.org/search/sss?query=xbox&sort=date"
else:
page_link="https://portland.craigslist.org/search/sss?s={}&query=xbox&sort=date".format(i)
res=requests.get(page_link)
soup=BeautifulSoup(res.text,'html.parser')
for container in soup.select('.result-info'):
date=container.select('.result-date')[0].text
try:
location=container.select('.result-hood')[0].text
except:
try:
location=container.select('.nearby')[0].text
except:
location='NULL'
title=container.select('.result-title')[0].text
try:
price=container.select('.result-price')[0].text
except:
price="NULL"
print(date,location,title,price)
f.write(date+','+location.replace(","," ")+','+title.replace(","," ")+','+price+'\n')
i+=120
f.close()
こんにちは、質問の質問部分を含めるのを忘れてしまったようです。現在存在するのは問題の説明だけです。答えがあるように質問を更新してください。 –
'while while'を使用し、さらにページを読むことができないときに 'break'を使います(' try/except') – furas
私はこれを試して、ブレークを認識しませんでした。掻き取るアイテムがなくなりました。 – Tarzan