我正在嘗試從這個網站上抓取前十個專案。我正在使用 Python Selenium/BeautifulSoup。似乎該表正在使用一些 jquery 腳本加載。老實說,由于教程和指南與該網站不匹配,我很難從哪里開始。
EX:很多人說檢查檢查元素中的網路選項卡以查找 XHR 資料。但是,該網站在 XHR 選項卡中沒有任何值得加載的值,而是在 JS 選項卡中。我找到了請求 URl https://www.anime-planet.com/dist/3p/jquery.min.js?t=1657108207,但它似乎沒有給我任何公正。
我是不是想太多了,應該直接從 html 中抓取?任何建議將不勝感激。
uj5u.com熱心網友回復:
該表不是從 jQuery 加載的。它是服務器渲染的,易于抓取。你只需要requests和beautifulsoup; 硒是不必要的。
通過一些快速的 DOM 檢查,這應該非常簡單。你可以這樣做:
import requests
from bs4 import BeautifulSoup
# send HTTP request to page and parse
page = requests.get('https://www.anime-planet.com/manga/top-manga/week')
soup = BeautifulSoup(page.text, 'html.parser')
top_ten = []
count = 0
for link in soup.select('td.tableTitle > a.tooltip'):
if count == 10:
break
top_ten.append(link.getText())
count = 1
print(top_ten)
uj5u.com熱心網友回復:
這是基于熊貓和請求的解決方案:
import requests
import pandas as pd
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36'
}
url = 'https://www.anime-planet.com/manga/top-manga/week'
r = requests.get(url, headers=headers)
df = pd.read_html(r.text)[0]
print(df[:10])
終端列印的結果:
| 秩 | 標題 | 年 | StatusEpsRating | |
|---|---|---|---|---|
| 0 | 1 | 結束后的開始 | 2018 | 未讀讀 想讀 停滯不前 不讀 |
| 1 | 2 | 該死的輪回 | 2022 | 未讀讀 想讀 停滯不前 不讀 |
| 2 | 3 | 一塊 | 1997 | 未讀讀 想讀 停滯不前 不讀 |
| 3 | 4 | 全知讀者 | 2020 | 未讀讀 想讀 停滯不前 不讀 |
| 4 | 5 | 劍圣之子 | 2022 | 未讀讀 想讀 停滯不前 不讀 |
| 5 | 6 | 我的學校生活 假裝是一個不值錢的人 | 2022 | 未讀讀 想讀 停滯不前 不讀 |
| 6 | 7 | 一萬年后歸來的玩家 | 2022 | 未讀讀 想讀 停滯不前 不讀 |
| 7 | 8 | 柔術開仙 | 2018 | 未讀讀 想讀 停滯不前 不讀 |
| 8 | 9 | 死神浮月 | 2022 | 未讀讀 想讀 停滯不前 不讀 |
| 9 | 10 | 惡棍注定要死 | 2020 | 未讀讀 想讀 停滯不前 不讀 |
相關熊貓檔案:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_html.html
對于請求:https ://requests.readthedocs.io/en/latest/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507073.html
標籤:javascript Python jQuery 硒 网页抓取
下一篇:在Button組件中插入鏈接
