首页 > 解决方案 > 如何使用 Beautiful Soup 为 HTML 页面找到唯一的文章 ID/页面 ID?

问题描述

我正在尝试查找与每个 HTML 页面关联的唯一文章 ID/页面 ID。但是,问题在于每个 HTML 页面的文章 ID 格式不同。例如,articleId、article-id、articleID、value、netID 等。对于大多数 HTML 页面,文章 id 可以在 script 标签中找到。这是脚本标签内的文本的外观:

<script type="text/javascript">var lf_config = [{"collectionMeta":"eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzI1NiJ9.eyJ0aXRsZSI6IkN1dCBGYXQgRmFzdCYjODIzMDthbmQgSGF2ZSBGdW4gRG9pbmcgSXQhIiwidXJsIjoiaHR0cHM6XC9cL2Jsb29kcHJlc3N1cmVzb2x1dGlvbi5jb21cL2N1dC1mYXQtZmFzdC1mdW5cLyIsInRhZ3MiOiIiLCJjaGVja3N1bSI6IjIxODcxZjdmYTVkZTcwNjQ2NDAyNzk2YjFjMDFiZTE2IiwiYXJ0aWNsZUlkIjoxMTMzfQ.A4dXaOb2eIKk2OiANm0USozRiof21OKzQUjvy6fymgg",
"checksum":"21871f7fa5de70646402796b1c01be16",
"siteId":"339299",
"articleId":1133,"strings":"","el":"livefyre-comments"}];var conv = fyre.conv.load({}, lf_config);</script>
<script type="text/javascript">
/* <![CDATA[ */
var wpcf7 = {"apiSettings":{"root":"https:\/\/bloodpressuresolution.com\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"},"recaptcha":{"messages":{"empty":"Please verify that you are not a robot."}}};
/* ]]> */
</script>

这是我尝试过的代码,但它还没有产生任何输出。列表 new_link 包含每个 HTML 页面的 URL。我认为正则表达式很好,但我无法解析标签内的文本并搜索正则表达式。我想最终将文章 ID 及其值存储为我的输出。请帮助我弄清楚如何从每个 HTML 页面中找到唯一的文章 ID。

for i in new_link:
    new_req = requests.get(i, headers=hdr)
    soup = BeautifulSoup(new_req.text, "html.parser")
    scripts = soup.findAll("script", attrs={"type" : "text/javascript"})
    for j in scripts:
        temp = re.findall(pattern, str(j))
        print(temp)```


标签: pythonhtmlbeautifulsoup

解决方案


如果您想通过 id 查找 en 元素或对象

div = soup.find(id="articlebody")

推荐阅读