我正试图从网站上抓取电话号码,但只有当我点击第一个号码时,这些号码才会出现.换句话说,手机将隐藏在HTML码中,当我点击它时,它就会出现.你能帮帮忙吗? 我使用了以下代码:

import requests
from bs4 import BeautifulSoup

url = "https://hipages.com.au/connect/makermanservices"

req = requests.get(url).text

soup = BeautifulSoup(req,"html.parser")

phone = soup.find('a', class_='PhoneNumber__MobileOnly-sc-4ewwun-1 izNnbI phone-number__mobile')
print(phone)

推荐答案

稍微黑客一下,就可以在bs4pandas的帮助下得到电话号码.

例如:

import json
import re

import pandas as pd
import requests
from bs4 import BeautifulSoup

url = "https://hipages.com.au/connect/makermanservices"
script_text = "window.__INITIAL_PROPS__="

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48",
}

soup = BeautifulSoup(requests.get(url, headers=headers).content, "lxml")
script = soup.find("script", string=lambda t: t and script_text in t)
data = json.loads(re.search(script_text + r"(.+)", script.string).group(1))
df = (
    pd.read_json(data)
    ["fetchKey-7-0-0_/connect/makermanservices"]
    ["site"]
    ["primary_location"]
    ["phone"]
)
print(df)

这应该打印出来:

1800 801 828

Python相关问答推荐

如何将uint 16表示为float 16

如何判断. text文件中的某个字符,然后读取该行

如何观察cv2.erode()的中间过程?

Plotly:如何更改Heatmap中彩色条的勾选文本

KNN分类器中的GridSearchCV

用Python获取HTML Span类中的数据

对Numpy函数进行载体化

如何将ctyles.POINTER(ctyles.c_float)转换为int?

连接两个具有不同标题的收件箱

如何在Python中将returns.context. DeliverresContext与Deliverc函数一起使用?

Python 约束无法解决n皇后之谜

cv2.matchTemplate函数匹配失败

导入...从...混乱

如何在Python中找到线性依赖mod 2

计算天数

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

网格基于1.Y轴与2.x轴显示在matplotlib中

寻找Regex模式返回与我当前函数类似的结果

在pandas/python中计数嵌套类别

为什么常规操作不以其就地对应操作为基础?