首页 > 解决方案 > 使用 Beautiful Soup 4 抓取 CSS 选择器

问题描述

我试图只打印来自给定货币的高影响力新闻。当我在语句中包含worsedata == True条件时,代码不会打印任何内容。if当我只在语句中包含货币条件时,if它会打印所有美元新闻,而不管影响强度如何。

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.forexfactory.com/#closed")

soup = BeautifulSoup(r.text, 'lxml')

table = soup.find("table", class_="calendar__table")

worsedata = False

for row in table.find_all('tr', class_='calendar__row--grey'):  #finds all rows on forexfactory.com 

    currency = row.find("td", class_="currency")
    currency = currency.get_text(strip=True)

    for impact in row.select("tr.calendar__row calendar_row calendar__row--grey span.high:not(.revised)"):
        worsedata = True

    if currency == "USD" and worsedata == True:

        actual = row.find("td", class_="actual")
        actual = actual.get_text(strip=True)

        forecast = row.find("td", class_="forecast")
        forecast = forecast.get_text(strip=True)

        print(actual, forecast)

标签: pythoncssweb-scrapingbeautifulsoup

解决方案


推荐阅读