如何在选择器中使用部分文本而不是精确?

时间:2017-11-07 16:38:14

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

我已经在python中编写了一个脚本,用于从torrent站点收集电影名称及其类型。由于BeautifulSoup不支持伪选择器,我找到了一种克服这一点的技术。我现在面临的唯一问题是,要获得结果,下面脚本中的反转文本必须是精确的。有没有什么方法可以使用类似于:contains属性的东西,就像部分匹配一样,这样即使我的查询中的文本包含部分单词,我仍然会解析Genre之后的Gen。 [预计会在脚本中使用nre:enrGenre:代替import requests from bs4 import BeautifulSoup soup = BeautifulSoup(requests.get("https://www.yify-torrent.org/search/1080p/").text,"lxml") for title in soup.select("div.mv"): names = title.select("h3 a")[0].text genre = ' '.join([item.next_sibling for item in title.select(".mdif li b") if item.text=="Genre:"]) print(names, genre)

这是脚本:

Swelter (2014) 1080p Action
Larry Crowne (2011) 1080p Comedy
Terminal Island (1973) 1080p Action
Heart of Midnight (1988) 1080p Drama
The Lift (1983) 1080p Fantasy

结果:

ng-repeat

1 个答案:

答案 0 :(得分:1)

您只需使用in运算符来检查字符串是否包含substring:

genre = ' '.join([item.next_sibling for item in title.select(".mdif li b") if "Genre:" in item.text])

您可以使用if "Genre:" in item.text以及if "nre:" in item.textif "Gen" in item.text等...