gpt4 book ai didi

python - 响应无法使用 Selenium 滚动更新

转载 作者:行者123 更新时间:2023-12-01 03:07:06 25 4
gpt4 key购买 nike

该脚本应该从显示结果子集的 base_url 获取所有链接,向下滚动时,更多结果将添加到子集中,直到列表耗尽。我可以做到这一点,但问题是我只能检索网页显示时最初加载的少数链接,而不执行任何滚动。响应应该能够通过网络驱动程序与滚动一起更新。然而,这是我到目前为止的代码。

import re
import requests
import time

from bs4 import BeautifulSoup
from selenium import webdriver

mybrowser = webdriver.Chrome("E:\chromedriver.exe")

base_url = "https://genius.com/search?q="+"drake"

myheader = {'User-Agent':''}

mybrowser.get(base_url)
t_end = time.time() + 60 * 1
while(time.time()<t_end):
mybrowser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
response = requests.get(base_url, headers = myheader)
soup = BeautifulSoup(response.content, "lxml")

pattern = re.compile("[\S]+-lyrics$")

for link in soup.find_all('a',href=True):
if pattern.match(link['href']):
print (link['href'])

仅显示前几个链接。不会检索当 selenium 滚动页面时加载的链接。

最佳答案

您需要从 Selenium 本身解析 HTML(当 Selenium 滚动网页时,这会发生变化),而不是使用请求来下载页面。

更改:

response = requests.get(base_url, headers = myheader)
soup = BeautifulSoup(response.content, "lxml")

至:

html = mybrowser.page_source
soup = BeautifulSoup(html, "lxml")

它应该可以正常工作。

关于python - 响应无法使用 Selenium 滚动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268004/

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