2017-09-03 19 views
1

我已經編寫了一個用於python腳本的選擇器,該選擇器可以根據它的索引從網頁抓取電影名稱。我只想得到兩部電影的名字[我重複,兩部電影],不管它是1,2還是3,4或15,16。基本上我的意圖是加入兩個索引來製作個人選擇器?在這種情況下,我使用了兩個索引0和1來創建一個帶「+」操作符的選擇器來加入它。我相信應該有更聰明的方法來做同樣的事情。更具體地講,看下面的例子:加入索引以製作單個選擇器

import requests ; from bs4 import BeautifulSoup 

soup = BeautifulSoup(requests.get("https://yts.ag/browse-movies").text,'html.parser') 
movie = soup.select(".browse-movie-title")[0].text + soup.select(".browse-movie-title")[1].text 
print(movie) 

這是結果:

它是在晚上Mindhorn

編輯:

對於我說的話清晰如下:

['Mindhorn', 'Dead Again in Tombstone'] 

像結果列表

換行符結果:

Mindhorn 
Dead Again in Tombstone 

預期輸出:

Mindhorn Dead Again in Tombstone 

回答

1

使用列表理解,你可以得到n第一電影的標題:

movies = [m.text for m in soup.select(".browse-movie-title")][:n] 

然後你就可以打印結果成不同的行如果你願意:

print('\n'.join(movies)) 

編輯:顯然BeautifulSoup不支持某些CSS僞類,如nth-child,否則你可能會限制從查詢子節點的數目。爲了記錄,這個選擇器從Chrome控制檯工作:

section .row .browse-movie-wrap:nth-child(-n+2) 
+0

謝謝stjernaluiht,你是寶石。這正是我期待的。順便說一句,你能告訴我如何以換行或列表形式打印結果,但我們總體看到的結果。如果你不明白我的意思,請告訴我。 – SIM

+0

我不明白,任何例子? – stjernaluiht

+0

感謝您的回覆。請參閱上面編輯的部分。 – SIM