python - find vs select_one 在 python 网络抓取中给了我不同的结果
问题描述
嗨,我是 Python Beautiful Soup 的初学者。我正在尝试从https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniqBStoreParam1=val1&wid=11.productCard.PMU_V2抓取网站
当我使用 find 方法时,我可以得到产品的价格信息。但是,使用 select_one 方法时,我无法获得有关价格的任何信息。
find
import requests
from bs4 import BeautifulSoup
import pandas as pd
r=requests.get('https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniqBStoreParam1=val1&wid=11.productCard.PMU_V2')
soup=BeautifulSoup(r.text,'lxml')
results=soup.find_all('a', attrs={'class':'_31qSD5'})
for result in results:
price=result.find('div',{'class':'_1vC4OE _2rQ-NK'}).text[1:]
选择一个
import requests
from bs4 import BeautifulSoup
import pandas as pd
r=requests.get('https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniqBStoreParam1=val1&wid=11.productCard.PMU_V2')
soup=BeautifulSoup(r.text,'lxml')
results=soup.select('._31qSD5')
result=results[0]
price=result.select_one('._1vC4OE _2rQ-NK').text[1:]
谁能启发我在 select_one 方法中获取价格信息?
解决方案
像下面这样尝试怎么样?这部分-NK
课程_2rQ-NK
似乎是独一无二的,因此您可以利用它来获取价格。
import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniqBStoreParam1=val1&wid=11.productCard.PMU_V2')
soup = BeautifulSoup(r.text,'lxml')
for items in soup.select('._31qSD5'):
price = items.select_one('[class$="-NK"]').text[1:]
print(price)
推荐阅读
- oracle - Oracle HTTP 服务器“文件名太长”错误
- java - 使用 Java 8 流进行重构
- treeview - Vuetify v-treeview。更改文本
- python - 重塑材料科学数据集(可能使用 melt() )
- c# - 在执行日期时间比较时,如何解决日期时间缺乏毫秒精度的问题?
- amazon-web-services - aws s3 | 桶密钥已启用
- list - 模式匹配 List 'init' 和 'last' 而不是 'head' 和 'tail'
- flutter - sqflite 无法读取 Flutter 中的目录
- python-3.x - 将 Colab 模块导入 Colab
- python - 在python中按另一个列表对对象列表进行排序