【问题标题】:BeautifulSoup - Extract text from <head> and </head>BeautifulSoup - 从 <head> 和 </head> 中提取文本
【发布时间】:2022-01-22 00:37:14
【问题描述】:

我正在尝试从页面上的源代码中提取文本。 在标签中,我想提取这个:

<script src="/_next/static/d5fgdrSQl/_buildM.js" defer=""></script>

d5fgdrSQl 是一个动态数据,我每天都需要精确地报废这个密钥。

我的脚本是这样开始的,但我不知道该怎么做。

from bs4 import BeautifulSoup
import re
import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'}
urlweb = 'https://www.thenameofthewebiste.com'

r1 = requests.get(urlweb,headers=headers)

s1 = BeautifulSoup(r1.text, 'html.parser')
TAG = s1.find_all('_buildM')

print(TAG)

【问题讨论】:

  • TAG = s1.find_all('_builddata') 是/不会按照您的想法行事。标签是script。我建议看一下文档或教程。
  • 网站是什么?

标签: python web-scraping beautifulsoup


【解决方案1】:

你需要传递一个用户代理头,然后你可以使用一个属性=值的css选择器,以$操作符结尾来定位脚本src

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.paris-turf.com/', headers = {'User-Agent':'Mozilla/5.0'})
soup = bs(r.content, 'lxml')
print(soup.select_one('[src$="_buildManifest.js"]')['src'].split('/')[3])

【讨论】:

  • 嗨,我只看到以buildManifest.js 结尾的文件。如果你有替代品,你可以使用soup.select_one('[src$="_buildManifest.js"], [src$="&lt;your ending goes here&gt;.js"]')
【解决方案2】:

要动态选择,可以使用re

from bs4 import BeautifulSoup
import re

doc ='''
<script src="/_next/static/85565454878CDDS7785/_builddata.js" defer=""></script>
'''
      
soup = BeautifulSoup(doc,'lxml')
script= soup.find("script")
s=script['src']
d=re.search(r'(\d+\w+\d+)',s).group(1)
print(d)

输出

85565454878CDDS7785

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多