gpt4 book ai didi

web-scraping - 如何使用剧作家捕捉特定的重定向?

转载 作者:行者123 更新时间:2023-12-05 03:22:17 27 4
gpt4 key购买 nike

当 Google map 在某种程度上确认某个地点搜索时,它会重定向到特定的 Google 地点 url,否则它会返回 map 搜索结果页面。

谷歌地图搜索“manarama”是

https://www.google.com/maps/search/manarama/@23.7505522,90.3616303,15z/data=!4m2!2m1!6e6

重定向到 Google Place URL

https://www.google.com/maps/place/Manarama,+29+Rd+No.+14A,+Dhaka+1209/@23.7505522,90.3616303,15z/data=!4m5!3m4!1s0x3755bf4dfc183459:0xb9127b8c3072c249!8m2!3d23.750523!4d90.3703851

谷歌地图搜索结果页面在没有确认具体地点的情况下看起来像下面的链接

https://www.google.com/maps/search/Mana/@24.211316,89.340686,8z/data=!3m1!4b1

import asyncio
from playwright.async_api import async_playwright

async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
await page.goto("https://www.google.com/maps/search/manarama/@23.7505522,90.3616303,15z/data=!4m2!2m1!6e6", wait_until="networkidle")
print(page.url)
await page.close()
await browser.close()

asyncio.run(main())

有时它会返回重定向的 URL,但大多数时候不会。如何确定 URL 已重定向到某个地方 URL?以下 StackOverflow 帖子有相似之处,但无法适用于我的情况

How to catch the redirect with a webapp using playwright

最佳答案

您可以使用 expect_navigation .

在评论中,您提到了与函数匹配的 url。几乎所有此类剧作家函数都接受 regex模式。因此,如有疑问,请使用正则表达式。请看下面的代码:

import asyncio
from playwright.async_api import async_playwright, TimeoutError
import re

pattern = re.compile(r"http.*://.+?/place.+")


async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
try:
async with page.expect_navigation(url=pattern, timeout=7000) as resp:
await page.goto(
"https://www.google.com/maps/search/manarama/@23.7505522,90.3616303,15z/data=!4m2!2m1!6e6",
wait_until='networkidle')
except TimeoutError:
print('place not found')
else:
print('navigated to place')

print(page.url)
await page.close()
await browser.close()

asyncio.run(main())

为了检查页面是否导航,只需将函数包装在 try..except block 中并传递一个合适的 timeout 参数(以毫秒为单位) 期望导航。然后,如果出现 Timeout 错误,您就会知道没有任何与我们的模式匹配的 url 更改。

关于web-scraping - 如何使用剧作家捕捉特定的重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72764540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com