如何使用美丽的汤和urllib.request获取隐藏价值

时间:2018-02-06 05:54:22

标签: python python-3.x

我在Windows10X64上使用Python3(已安装Ananconda)。 我试图在" span"中获得价值。元素使用 urllib BeautifulSoup ,在Chrome中,它显示8000,但它总是为我的代码结果提供0个字母。

有人可以建议获取Chrome网页浏览器中显示的实数的方法吗?

这是我的代码。

from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
url ='https://www.futbin.com/18/squad/100133002/sbc'
req = Request(url,headers={'User-Agent': 'Mozilla/5.0'})
page_html = urlopen(req).read()
page_soup = BeautifulSoup(page_html,'html.parser')

page_soup.findAll("div", {"class": "ps4-price"})

结果如下。

[<div class="ps4-price">
 <img class="price-platform-img" src="https://cdn.futbin.com/design/img/logos/full_small/ps_blue.png"/>
 <div class="price-row-text" id="squad-price-ps3"><span class="psprice2">0</span></div>
 </div>]

在&#34; span&#34;标签,它应显示相同的值(例如,8000,9000),如Chrome / Firefox中所示

2 个答案:

答案 0 :(得分:3)

你可以用这种方法:

>>> url = 'https://www.futbin.com/18/squad/100133002/sbc'
>>> req = Request(url,headers={'User-Agent': 'Mozilla/5.0'})
>>> webpage = urlopen(req).read()
>>> soup = BeautifulSoup(webpage, "html.parser")
>>> required = soup.find_all("div", {"class":"pcdisplay-ps-price"})
>>> x = []
>>> for i in required:
...     x.append(i.get_text())
>>> for i in x:
...     print(i)
...

950
550
750
600
1,300
900
850
550
600
600
600

答案 1 :(得分:0)

ps4-price 的div通过其他请求加载。您也可以点击REFRESH PRICE按钮获取网址。

https://www.futbin.com/18/getPricesById

简单的解决方案是通过 requests 。您可以按照此网站上的步骤操作:https://curl.trillworks.com/

详细步骤

  1. 通过Chrome打开“https://www.futbin.com/18/squad/100133002/sbc
  2. 打开开发人员工具 - 网络标签
  3. 点击REFRESH PRICE按钮,您将在网络标签“https://www.futbin.com/18/getPricesById
  4. 下显示此网址
  5. 右键单击URL并复制为cURL
  6. 粘贴https://curl.trillworks.com/以获取Python代码
  7. 由于响应是JSON,您可以直接提取价格而不是bs4。 print(response.json()['total_prices']['ps'])