我正在使用 Python、Requests、bs4 库开发一个网页抓取项目。
我试图抓取 IPL 的网页,我想从该页面获取每个赛季每场比赛的所有详细信息。
预期:标签长度应为 60,因为进行了 60 场比赛! 实际:0
from flask import Flask, render_template, request,jsonify
from flask_cors import CORS,cross_origin
import requests
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen as uReq
#Main Web page URL
ipl_url = "https://www.iplt20.com/matches/results/2008"
response = requests.get(ipl_url)
if response.status_code == 200:
html_content = response.text
soup = bs(html_content, 'html.parser')
else:
print(f'Failed to retrieve the web page. Status code: {response.status_code}')
#HERE THE PROBLEM STARTS
match_center = soup.find_all('div', {'class':'vn-shedule-desk col-100 floatLft'})
len(match_center) # ==> Expected: 60 , Actual: 0
#got the HTML parser using 'bs' But when I try to find
#'div', {'class':'vn-shedule-desk col-100 floatLft'} this tag then I get an empty list
正如我们在评论中看到的,问题是“内容是使用 JavaScript 动态创建的。它不存在于源 HTML 中。”
所以,你可以尝试使用Scrapy和Selenium。 但我认为 Selenium 将是这种情况下的最佳选择。