javascript - 如何抓取页面的动态 URL?

标签 javascript python python-2.7 selenium

我正在尝试通过 selenium 和 python 进行一些网站测试。我确实填写了页面http://www.flightcentre.co.nz/并提交了表格。但现在搜索结果将我带到一个新页面,网址为 - https://secure.flightcentre.co.nz/eyWD/results 。我的网络驱动程序现在将如何处理这个问题?我是第一次这样做。任何人都可以通过提供示例来帮助我或向我指出此类正确的教程吗?

谢谢。

最佳答案

好吧,既然我试图回答你的另一个问题,我会尝试一下这个问题,尽管你没有完全解释你想要什么。

要记住的一件事是 Selenium 正在运行您的浏览器,而不是传统的网络抓取工具。这意味着如果 url 发生变化也没什么大不了的,唯一需要改变 Selenium 中抓取方式的时候是当你收到一个弹出窗口时。

您可以通过其他代码做的一件事是在寻找航类时执行

driver.implicitly_wait(40)//40 is the amount of seconds

这将在崩溃之前等待至少 40 秒,然后在页面加载完成或您接下来想要执行的任何操作在 dom 中处于事件状态时启动。

现在,如果您尝试抓取所有出现的航类数据,那将相当棘手。您可以执行 for 循环并抓取页面上的每个元素并将其写入 csv 文件。

class_for_departure_flight = driver.find_elements_by_xpath('//div[@class="iata"]')
for flights in class_for_departure_flight:
            try:
                with open('my_flights.csv', 'a', newline='') as flights_book:
                csv_writer = csv.writer(flights_book, delimiter = ',')
                csv_writer.writerow(flights.text)
            except:
                print("Missed a flight")

第二部分中需要注意的是我正在使用 Python 中的 CSV 库来写入数据行。您可以将一堆数据附加在一起并将其写为一行,如下所示:

data = (flights, dates, times)
csv_writer.writerow(data)

它会将电子表格中同一行上的所有不同内容进行校正。

另外两件容易被忽视的大事是:

class_for_departure_flight = driver.find_elements_by_xpath('//div[@class="iata"]')

即 driver.find_elements_by_xpath,您会注意到 elements 是复数,这意味着它正在查找具有相同 class_name 的多个对象,并将它们存储在一个数组中,以便您可以迭代在 for 循环中对它们进行遍历。

下一部分是 csv_writer.writerow(flights.text) 当你迭代你的航类时,你需要抓取文本来执行flights.text。如果您仅使用搜索功能来执行此操作,您也可以执行类似的操作。

class_for_departure_flight = driver.find_elements_by_xpath('//div[@class="iata"]').text

希望这有帮助!

关于javascript - 如何抓取页面的动态 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376595/

相关文章:

Python识别数字在哪个区间

javascript - 通过单选按钮和 JS 将 Stripe 费用添加到总成本中

javascript - Google maps geocode API V3 未在 javascript 函数中返回结果

javascript - 单击将输入文本复制到另一个位置

python - cryptography.hazmat.bindings._openssl导入ffi,lib ImportError:DLL加载失败:

python-2.7 - 由于从 `pip` 返回的 'Move Permanently' 错误,`https://pypi.python.org/simple/` 无法在 Docker 容器内安装软件包

javascript - 设置 Yeoman——多个 bower_components

Python Selenium "WebDriverElement' 对象没有属性 'get_attribute'

python - 没有从 sql 查询 select python 中获得预期结果

python - SqlAlchemy 检查关系属性是否在列表中