如何使用Python从网站中提取动态生成的链接?

问题描述 投票:0回答:1

我正在编写一个代码,我需要从特定网站获取所有链接/URL,但是,这些链接似乎是动态生成的,并且可能在获取初始 HTML 后使用 JavaScript 或其他一些动态内容加载机制进行填充.

最初,我使用了以下代码:

import requests
from bs4 import BeautifulSoup


url = 'https://www.example.com/'
reqs = requests.get(url)
soup = BeautifulSoup(reqs.text, 'html.parser')

urls = []
for link in soup.find_all('a'):
    print(link.get('href'))

但是,这种方法不起作用,因为链接不是直接写在 HTML 中。相反,它们是稍后使用 JavaScript 代码生成的。如何提取这些动态生成的链接? 一个简单的提示将不胜感激。

javascript python html api xmlhttprequest
1个回答
0
投票

您是对的,HTML 不包含链接,因此您需要一种方法,让 JavaScript 在抓取页面之前运行。我喜欢 selenium webdriverchromedriver

from bs4 import BeautifulSoup
from selenium import webdriver

url = 'https://www.example.com/'

driver = webdriver.Chrome() # Open an automated browser
driver.get(url)             # Navigate to target page

soup = BeautifulSoup(       # Parse content _after_ any dynamic javascript stuff
    DRIVER.page_source,
    'html.parser'
)

urls = []
for link in soup.find_all('a'):
    print(link.get('href'))
© www.soinside.com 2019 - 2024. All rights reserved.