python - 抓取时如何限制结果的数量

标签 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?

最佳答案

这是一个使用 :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)

关于python - 抓取时如何限制结果的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56783942/

相关文章:

java - 只接受有效时间

php - PHP解析/语法错误;以及如何解决它们

python - 如何在 python 中抓取 instagram 帐户信息

python - CUDF/Python 警告 : "User Warning: No NVIDIA GPU detected"

python - ARIMA 超出统计模型中的样本预测?

Python - 用于带计数器

python - 为什么这里的python socket无法解析域名?

java - jSoup 获取 HTML 标签的值

python - 无法获取 HTTPS URL(请求包)

python - 为单个项目从多个来源收集数据的正确方法