【发布时间】:2018-07-26 20:05:44
【问题描述】:
我正在尝试使用 python 和 Beautiful soup 从页面中抓取一些信息,但我似乎无法写出我需要的正确路径,html 是:
<div class="operator active" data-operator_name="Etisalat" data-
operator_id="5"><div class="operator_name_etisalat"></div></div>
我正在尝试获取该运营商名称“Etisalat”,我已经做到了这一点:
def list_contries():
select = Select(driver.find_element_by_id('international_country'))
select.select_by_visible_text('France')
request = requests.get("https://mobilerecharge.com/buy/mobile_recharge?country=Afghanistan&operator=Etisalat")
content = request.content
soup = BeautifulSoup(content, "html.parser")
# print(soup.prettify())
prov=soup.find("div", {"class": "operator active"})['data-operator_name']
# prov = soup.find("div", {"class": "operator deselected"})
print(prov)
operator = (prov.text.strip())
但这只是返回一个 NoneType ..所以有些不对劲,谁能告诉我我做错了什么?谢谢。
【问题讨论】:
-
您的解决方案对我有用!只需将您的 html 复制为字符串,用 BeautifulSoup 解析它并使用您的 find(...)
>>> 'Etisalat'。你能把剩下的代码贴出来吗 -
我推测在
soup中,该类实际上不是operator active,而是在DOM 中。这可能是您没有得到结果的原因。 -
用其余代码编辑了问题。谢谢
-
第一个问题是请求不处理javascript,并且您获得的页面与您通过检查元素看到的页面不同。您应该通过在新选项卡 [ctrl]+U 中打开页面源来检查它。
标签: python html web-scraping beautifulsoup find