我总是碰壁。任何人都可以帮助我告诉我如何使用 Selenium 从一个网站抓取多个页面,而不必一遍又一遍地重复我的代码。
这是我当前的代码:
RegionIDArray = ['de/7132/New-York-City/d687-allthingstodo', 'de/7132/London/d737-allthingstodo']
class Crawling(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.set_window_size(10, 10)
self.base_url = "http://www.jsox.de/"
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
delay = 3
for reg in RegionIDArray:
page = 0
driver.get(self.base_url + str(reg))
for i in range(1,4):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
如果我运行此代码,我只能得到伦敦的结果,而不能得到第二个城市纽约的结果。
现在,我可以通过一遍又一遍地重复我的代码并抓取每个单独的网站页面,然后将每个数据帧的结果连接在一起来手动完成此操作,但这看起来非常不Python。我想知道是否有人有更快的方法或任何建议?
欢迎任何反馈:)
编辑
我根据 Anil 的评论修改了我的代码。 Selenium 现在打开纽约和伦敦的页面,但它只返回伦敦的结果。任何想法,原因可能是什么?
修改后的代码:
RegionIDArray = ['de/7132/New-York-City/d687-allthingstodo', 'de/7132/London/d737-allthingstodo']
class Crawling(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.set_window_size(10, 10)
self.base_url = "http://www.jsox.de/"
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
delay = 3
for reg in RegionIDArray:
page = 0
driver.get(self.base_url + str(reg))
for i in range(1,4):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
最佳答案
你的for循环
for reg in RegionIDArray:
page = 0
将循环遍历所有列表项,退出时reg
指向最后一项,即伦敦。这就是为什么你只得到最后一项
相反,您只需将 driver
部分放入 for 循环
def test_sel(self):
driver = self.driver
delay = 3
for reg in RegionIDArray:
page = 0
driver.get(self.base_url + str(reg))
for i in range(1,4):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
关于python - 使用 Selenium (Python3) 抓取网站的多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267456/