我正在嘗試從 IMDB 中抓取最熱門的劇集資料并提取節目名稱和劇集名稱。但是我面臨一個問題,節目名稱和劇集名稱都是位于同一標題下的錨標簽。元素截圖
這是代碼:
url = "https://www.imdb.com/search/title/?title_type=tv_episode&num_votes=1000,&sort=user_rating,desc&ref_=adv_prv"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
series_name = []
episode_name = []
episode_data = soup.findAll('div', attrs={'class': 'lister-item mode-advanced'})
for store in episode_data:
sName = store.h3.a.text
series_name.append(sName)
# eName = store.h3.a.text
# episode_name.append(eName)
有誰知道如何解決這個問題?
uj5u.com熱心網友回復:
在最后一部分你應該指定更多
for store in episode_data:
h3=store.find('h3', attrs={'class': 'lister-item-header'})
sName =h3.findAll('a')[0].text
series_name.append(sName)
eName = h3.findAll('a')[1].text
episode_name.append(eName)
請注意,'attack of titan' 的名稱已更改為它的日文名稱!!,這與瀏覽器中顯示的 html 不同,我不知道為什么!?!
uj5u.com熱心網友回復:
您可以使用 the find_all,然后通過其在串列中的索引呼叫它。或者你可以找到第一個錨標簽,然后使用find_next
Farhang 在 find_all() 解決方案中擊敗了我。所以這里是 find_next
for store in episode_data:
h3=store.find('h3', attrs={'class': 'lister-item-header'})
sName =h3.find('a')[0].text
series_name.append(sName)
eName = h3.find('a').find_next('a').text
episode_name.append(eName)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/426937.html
