gpt4 book ai didi

python - 无法使用请求从脚本标签中抓取不同专辑的链接?

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

我用 python 和 selenium 创建了一个脚本,用于从网页获取不同相册的链接。我的脚本正在完美地解析它们。

由于相册是公开的,因此无需登录。

现在,我希望使用 requestsre 模块执行相同的操作,因为我可以在页面源中看到不同专辑的名称。但是,大多数脚本标签都是相同的,因此我无法找出包含不同相册所需网址的所需部分。

Website link

使用有效的 Selenium :

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://www.facebook.com/pg/bloo88/photos/?tab=albums'

def get_links(link):
driver.get(link)
items = sorted(set([item.get_attribute("href") for item in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "[role='presentation'] > a")))]))
return items

if __name__ == '__main__':
with webdriver.Chrome() as driver:
wait = WebDriverWait(driver,10)
for elem in get_links(url):
print(elem)

在使用requestsre时,我收到了很多困惑的东西,我无法从中挖掘出所需的链接,因为大多数脚本标签都是相似的:

import re
import json
import requests

url = 'https://www.facebook.com/pg/bloo88/photos/?tab=albums'

res = requests.get(url,headers={"User-Agent":"Mozilla/5.0"}).text
data = re.findall(r'adp_PagePhotosTabAlbums[^,]+(.*?)();</script>', res)[0]
print(data)

如何使用请求抓取不同相册的链接?

最佳答案

如果你想匹配你的 selenium 输出(它给了我 4 个链接),你可以使用以下正则表达式。 <子> try it

import requests, re

base = 'https://www.facebook.com/pg/bloo88/photos/?tab=album&album_id='
p = re.compile(r'{"node":{"id":"(\d+)"')
r = requests.get('https://www.facebook.com/pg/bloo88/photos/?tab=albums')
links = [base + i for i in p.findall(r.text)]

关于python - 无法使用请求从脚本标签中抓取不同专辑的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57226567/

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