刮时如何限制结果量

时间:2019-06-27 04:34:47

标签: python parsing web-scraping screen-scraping

我正在尝试抓取一个网站及其工作,但我想限制出现的结果。我该怎么办?

req = requests.get('https://www.imdb.com/list/ls026573448/')
soup2 = bs4.BeautifulSoup(req.text,)

def pressed(self, instance):
    genre = self.genre.text
    if genre == 'Horror' or 'horror':
        soup2.select('h3')
        for x in soup2.select('h3'):
            print(x.text)

当我运行这段代码时,大约有50个结果。我如何将其限制为20或15?

1 个答案:

答案 0 :(得分:0)

以下是使用:has和:contains隔离适当元素,然后使用limit停止在20(感谢@facelessuser指出这一点)的示例。这是与bs4 4.7.1一起提供的。

from bs4 import BeautifulSoup
import requests

r = requests.get('https://www.imdb.com/list/ls026573448/')
soup = bs(r.content, 'lxml')
films = [item.text for item in soup.select('.lister-item-header:has(~ p:has(.genre:contains("Horror"))) a', limit = 20)]
print(films)