2017-09-03 20 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