Beautifulsoup类查找未返回

时间:2019-12-28 15:29:43

标签: python beautifulsoup

from bs4 import BeautifulSoup
import requests

URL = "https://www.takealot.com/huawei-p30-lite-128gb-dual-sim-midnight-black/PLID54510701"

page = requests.get(URL).text

soup = BeautifulSoup(page, 'html.parser')

title = soup.find(class_="cell auto")

print(title)

1 个答案:

答案 0 :(得分:0)

URL不包含任何数据,页面通过Javascript动态加载数据。但是,如果您在页面正在发出请求的Firefox / Chromefox网络检查器中进行检查,则可以从指定的URL获取数据。例如:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataGridHratky
{
    public class FirepointsManager : INotifyPropertyChanged
    {
        #region Enum
        #endregion
        #region constants
        #endregion
        #region private declarations
        private List<string> _avaiableFirepoints = new List<string>();
        private List<string> _avaiableFireworks = new List<string>();
        #endregion
        #region private methods

        #endregion
        #region Public events
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion
        #region Protected
        protected void RaiseChange(string property)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(property));

        }
        #endregion
        #region delegates
        #endregion
        #region Public properties
        /// <summary>
        /// Firepoints Observable collection
        /// </summary>
        public ObservableCollection<FirePoint> FirePoints { get; set; }
        /// <summary>
        /// List of avaiable firepoints
        /// </summary>
        public List<string>AvaiableCues
        {
            get
            {
                return _avaiableFirepoints;
            }
        }
        /// <summary>
        /// List of pyrotechnics types
        /// </summary>
        public List<string>AvaiableFWTypes
        {
            get
            {
                return _avaiableFireworks;
            }
        }
        #endregion
        #region Public methods
        /// <summary>
        /// Adds a new Firepoint
        /// </summary>
        /// <param name="f">Firepoint</param>
        public void AddFirePoint(FirePoint f)
        {
            f.SelectedCueChanged += F_SelectedCueChanged;
            FirePoints.Add(f);

        }
        /// <summary>
        /// Checks avaible cues and eliminates __MS if already used
        /// </summary>
        public void CheckSelectedCues()
        {
            foreach (var FirePoint in FirePoints)
            {
                if (FirePoint.SelectedCue == FirePoint.__MS)
                {
                    if (_avaiableFirepoints.Contains(FirePoint.__MS))
                        _avaiableFirepoints.Remove(FirePoint.__MS);
                    return;
                }
            }
            if (!_avaiableFirepoints.Contains(FirePoint.__MS))
                _avaiableFirepoints.Add(FirePoint.__MS);
            RaiseChange("CuesAvaiable");
        }
        private void F_SelectedCueChanged(object sender, EventArgs e)
        {
            CheckSelectedCues();
        }
        #endregion
        #region Constructors
        public FirepointsManager()
        {
            FirePoints = new ObservableCollection<FirePoint>();
            FirePoints.CollectionChanged += FirePoints_CollectionChanged;
            _avaiableFirepoints = FirePoint.GeneratedCues();
            _avaiableFireworks = FirePoint.FireworksTypes();

        }

        private void FirePoints_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            CheckSelectedCues();
        }
        #endregion
    }
}

打印:

class _MembersPageState extends State<MembersPage> {
  @override
  Widget build(BuildContext context) {
    return BlocProvider<MembersPageBloc>(
      create: (context) =>
          MembersPageBloc(userRepository: UserRepository.instance)..add(MembersPageShowed()),
      child: BlocBuilder<MembersPageBloc, MembersPageState>(
        builder: (context, state) {
          if (state is MembersPageSuccess) {
            return ListView.builder(
              itemCount: state.users.length,
              itemBuilder: (context, index) {
                User user = state.users[index];

                return ListTile(
                  isThreeLine: true,
                  leading: Icon(Icons.person, size: 36),
                  title: Text(user.name),
                  subtitle: Text(user.username),
                  onTap: () => null,
                );
              },
            );
          } else
            return Text("I don't care");
        },
      ),
    );
  }
}