使用Selenium(Python3)对网站的多个页面进行爬网

2024-10-02 02:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我不断地碰壁。有谁能告诉我如何使用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)

如果我运行这个代码,我只得到伦敦的结果,而不是第二城市纽约的结果。在

现在,我可以通过一遍又一遍地重复我的代码,对每个单独的网站页面进行爬网,然后将每个数据帧的结果连接在一起,但这看起来很不和谐。我想知道有没有人有更快的方法或建议?在

欢迎任何反馈:)

编辑

我根据对Anil的评论修改了我的代码。Selenium现在为纽约和伦敦打开了页面,但它只为伦敦提供了结果。知道吗,原因是什么?在

修改代码:

^{pr2}$

Tags: 代码selfurlforbase网站defdriver
2条回答

Python循环由缩进控制。在

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循环中

^{pr2}$

相关问题 更多 >

    热门问题