我正在尝试使用BeautifulSoup从网站上抓取一些数据,而我正在找回似乎是Django标签的文本,例如{{ResultLink}},而不是查看页面源代码时看到的实际URL。
我该如何检索页面上显示的文本?在BeautifulSoup中可以吗?
我的代码是这样的:
req = session.get(url, headers=headers)
bsObj = BeautifulSoup(req.text, 'html.parser')
if bsObj.find("div", {"id" : {"exactresult"}}) is not None:
price = bsObj.find_all("div", {"class" : {"price-details"}})[0].get_text()
link = bsObj.find_all("a", {"class" : {"btn-plate"}})[0].get_text()
price
和link
都在{{}}中返回变量,而不是网页上显示的文本。
我在许多其他网站(具有相关的类名等)上使用了几乎相同的代码,并且在该网站上工作正常,因此出现了我正在查看的网站上的特定内容。
谢谢
答案 0 :(得分:0)
使用Java脚本填充数据。您可以通过使用搜索字词向其API发送POST请求来获取数据。这将返回一个json
响应,其中包含所有数据,包括最上面的一个。
import requests
from bs4 import BeautifulSoup
#change 'ash1' to your search term
payload={"search":"ash1"}
req = requests.post('https://www.regplates.com/api/search',json=payload)
price=req.json()['data']['exact']['price']
link=req.json()['data']['exact']['link']
print(price,link,sep="\n")
输出
688800
/number-plate/ASH-1
取决于搜索项,json响应可能很大。一种简单的方法就是使用pprint
import pprint
...
pprint.pprint(req.json())
或者,您也可以使用selenium来获取数据。