python - 使用 Selenium (Python3) 抓取网站的多个页面

标签 python selenium

我总是碰壁。任何人都可以帮助我告诉我如何使用 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/

相关文章:

python - Django Rest Framework 如何在可浏览的 API 上发布数据

Selenium WebDriver - 单击 HOME 键

python - 如何在 selenium Python 中分页?

python - Selenium 元素不可见异常

java - Jbehave 无法找到多个故事

python - 在 python 中将列表打印到表上

Python 从用户输入的内容中读取下一行

python - DJango URL 反向错误 : argument to reversed() must be a sequence

python - 使用Python修改json属性但收到FileNotFoundError : [Errno 2] No such file or directory

javascript - Protractor中自动检测测试耦合(随机化测试执行顺序)