私は既にこのウェブサイトからURLを引き出すために数行のコードを書いています。 http://www.worldhospitaldirectory.com/United%20States/hospitalsPythonとSelenium:私はページ間のWebスクレイピングを自動化しています。 [次へ]ボタンでどのようにループできますか?
コードは以下の通りです:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import csv
driver = webdriver.Firefox()
driver.get('http://www.worldhospitaldirectory.com/United%20States/hospitals')
url = []
pagenbr = 1
while pagenbr <= 115:
current = driver.current_url
driver.get(current)
lks = driver.find_elements_by_xpath('//*[@href]')
for ii in lks:
link = ii.get_attribute('href')
if '/info' in link:
url.append(link)
print('page ' + str(pagenbr) + ' is done.')
if pagenbr <=114:
elm = driver.find_element_by_link_text('Next')
driver.implicitly_wait(10)
elm.click()
time.sleep(2)
pagenbr += 1
ls = list(set(url))
with open('US_GeneralHospital.csv', 'wb') as myfile:
wr = csv.writer(myfile,quoting=csv.QUOTE_ALL)
for u in ls:
wr.writerow([u])
そしてそれは、このウェブサイトから、個々のリンクを引っ張るために非常によく働きました。 しかし、問題は毎回自分でループする必要のあるページ番号を変更する必要があることです。
私は、このコードを必要な時間を計算することによって反復するようにアップグレードしたいと考えています。手動で入力する必要はありません。
ありがとうございました。
1.あなたのコードは115ページのものを取得するつもりはなく、114で終了するとwhileループを終了する 'pagenbr == 115'を行います。 2. whileループではなく、forループを使用してください。 'for range(1,116): 'の場合は' for pagenbr for'です。あなたが求めているものは完全に明確ではありません。 – TehTris