我正在尝试使用 requests_html 和 CSS 选择器从 This Website 中抓取应用程序名称(存在于网站底部),但它返回空列表,您能帮忙解释一下吗? 代码:
import requests_html
from requests_html import HTMLSession
s = HTMLSession()
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}
url = 'https://www.workato.com/integrations/salesforce'
r = s.get(url, headers=headers)
r.html.render(sleep=4)
apps = r.html.find('#__layout > div > div > div > div > div > main > article.apps-page__section.apps-page__section_search > div > div > div.apps-page__integrations > div > ul')
print(apps)
我试过以下方法:
for app in apps:
print(app)
我也用过
.text
但输出总是:
[]
您要查找的数据嵌入在一个外部 JavaScript 文件中(因此标准
beautifulsoup
在这里无济于事)。
要一次将所有应用程序加载到 pandas DataFrame 中,您可以使用下一个示例:
import re
import requests
import pandas as pd
from ast import literal_eval
url = 'https://cdn.marie.awsprod.workato.com/mktg-assets/c8ce8de9.js'
html_doc = requests.get(url).text
data = re.search(r'JSON\.parse\(\'(.*?)\'\)', html_doc).group(1)
data = literal_eval(data)
df = pd.DataFrame.from_dict(data, orient='index')
print(df.head())
印花:
姓名 | 标题 | 建筑类型 | 类别 | 别名 | 网址名称 | |
---|---|---|---|---|---|---|
kissmetrics | kissmetrics | Kissmetrics | 不支持 | ['即将到来'] | 南 | 南 |
热情 | 热情 | 热情 | 定制 | ['人力资源管理', '员工管理', '时间和费用'] | 南 | 南 |
adobeexpmgr | adobeexpmgr | Adobe 体验管理器 | 不支持 | ['销售'] | 南 | 南 |
综合 | 综合 | 综合 | 不支持 | ['销售'] | 南 | 南 |
团队合作 | 团队合作 | 团队合作 | 不支持 | ['销售'] | 南 | 南 |