如何在Beauty soup和python中指定css选择器?

2024-09-27 23:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从这个链接中刮取卡片的标题:https://www.axisbank.com/retail/cards/credit-card

使用下面的代码

from urllib.request import urlopen
from bs4 import BeautifulSoup
import json, requests, re

axis_url = ["https://www.axisbank.com/retail/cards/credit-card"]

html = requests.get(axis_url[0])
soup = BeautifulSoup(html.content, 'lxml')

print(soup.select("#ulCreditCard h3"))

结果如下:

[]

我主要关心的是如何在soup.select()函数中以这种形式指定使用选择器小工具获得的css选择器标记


Tags: fromhttpsimportcomurlwwwcardrequests
1条回答
网友
1楼 · 发布于 2024-09-27 23:19:21

如前所述,您要查找的信息是通过Javascript获得的。它使用稍微不同的URL来获取包含所有卡片详细信息的JSON数据。如果使用此选项,则无需使用BeautifulSoup即可轻松列出所有卡名。例如:

import requests
import json

axis_url = "https://www.axisbank.com/AjaxService/GetCreditCardsProducts"
data = {"strcategory" : "[]", "strrewardtypes" :"[]"}
r = requests.post(axis_url, data=data)

for entry in json.loads(r.json()[0]):
    print(entry['Name'])

我会给你以下卡片:

Axis Bank ACE Credit Card
Axis Bank AURA Credit Card
Privilege Easy Credit Card
Axis Bank Reserve Credit Card
Axis Bank Freecharge Plus Credit Card
IndianOil Axis Bank Credit Card
Axis Bank Magnus Credit Card
Flipkart Axis Bank Credit Card
Axis Bank Freecharge Credit Card
Axis Bank MY Zone Credit Card
Axis Bank Neo Credit Card
Axis Bank Vistara Credit Card
Axis Bank Vistara Signature Credit Card
Axis Bank Vistara Infinite Credit Card
Axis Bank Privilege Credit Card
Miles and More Axis Bank Credit Card
Axis Bank Select Credit Card
Axis Bank Pride Platinum Credit Card
Axis Bank Pride Signature Credit Card
Axis Bank MY Zone Easy Credit Card
Axis Bank Insta Easy Credit Card
Axis Bank Signature Credit Card with Lifestyle Benefits
Platinum Credit Card
Titanium Smart Traveler Credit Card
Axis Bank My Wings Credit Card

相关问题 更多 >

    热门问题