我正在学习网页抓取,并且想要从与我传入soup.select("css locators")
的CSS匹配的网页中获取数据。当我检查网页中的CSS定位符时,它会突出显示正确的元素,但是当我在soup.select()
方法中使用相同的元素时,它不会返回零或返回0。
我正在从以下网站检索数据:https://www.prokabaddi.com/teams/bengaluru-bulls-profile-1
Css选择器,用于从上述网站.si-section-header > span.si-title
可以正常工作,但是当我在soup.select(".si-section-header > span.si-title")
方法中使用该网页时,它不返回任何值或为0
# code sample
import requests
import bs4
URL = "https://www.prokabaddi.com/teams/bengaluru-bulls-profile-1"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html.parser')
a = soup.select('.si-section-header > span.si-title')
Print(a)
我希望输出返回CSS选择器突出显示的值。在这种情况下,CSS会突出显示3个值,因此我希望在执行上述代码时打印出所有3个值。
答案 0 :(得分:2)
大量内容是动态添加的,不会被您的初始请求所捕获。您正在查看的元素是从另一资源中提取的模板的一部分。刷新页面时,您可以在“网络”标签中找到它。
var firebaseConfig = {
apiKey: "AIzaSyAPeU7jO2Zz5kdrh-4g4ehfcrL8Aufzubs",
authDomain: "udemy-modern-javascript-cee40.firebaseapp.com",
databaseURL: "https://udemy-modern-javascript-cee40.firebaseio.com",
projectId: "udemy-modern-javascript-cee40",
storageBucket: "udemy-modern-javascript-cee40.appspot.com",
messagingSenderId: "941299603483",
appId: "1:941299603483:web:afcd4f1da6878b51ef80be",
measurementId: "G-BRYW3TQNLL"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
const db = firebase.analytics();
db.collection('recipes').get().then((snapshot)=>{
console.log(snapshot);
}).catch(err =>{
console.log(err)
});
const db = firebase.analytics();
答案 1 :(得分:0)
根据所需的数据,很多数据将以JSON返回。
import requests
j = requests.get("https://www.prokabaddi.com/sifeeds/kabaddi/live/json/multisport_cache_25_3_pkl_0530_en_team_1.json").json()
for match in j['matches']:
print(match)
可能包含所需数据的其他URL包括:
https://www.prokabaddi.com/sifeeds/kabaddi/static/json/1_team.json
https://www.prokabaddi.com/sifeeds/kabaddi/live/json/multisport_cache_25_3_0_0530_en_4.json
打开开发人员工具,依次选择“网络”标签,XHR和刷新页面,即可查看所有内容