加入索引以创建单个选择器

时间:2017-09-03 15:24:02

标签: python python-3.x web-scraping css-selectors

我已经编写了一个在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 个答案:

答案 0 :(得分: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)