該腳本應該獲取base_url
的所有鏈接,該鏈接顯示結果的子集,並且向下滾動時會將更多結果添加到子集,直到列表用盡。我能夠做到這一點,但問題是,我只能夠檢索只有當網頁出現時加載最初加載而沒有執行任何滾動的少數鏈接。響應應該能夠隨網頁驅動程序一起更新。不過,這是我的代碼。響應無法通過selenium滾動更新
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'])
只顯示前幾個鏈接。不會檢索硒滾動頁面時加載的鏈接。
您正在使用請求下載網頁,而不是從硒取回。 – Rishav
@Rishav問題是在內部更新URL的ajax請求。像'http://genius.com/?page=i(1-50..60 ... n)&& q = drake' – pythonlearn