Bra*_*mon 3 python tags beautifulsoup python-3.x
在研究这个问题的部分答案时,我遇到了bs4.element.Tag一堆嵌套的字典和列表(s见下文)。
s 有没有办法在不使用的情况下返回包含的网址列表re.find_all?关于此标签结构的其他评论也很有帮助。
from bs4 import BeautifulSoup
import requests
link = 'https://stackoverflow.com/jobs?med=site-ui&ref=jobs-tab&sort=p'
r = requests.get(link)
soup = BeautifulSoup(r.text, 'html.parser')
s = soup.find('script', type='application/ld+json')
## the first bit of s:
# s
# Out[116]:
# <script type="application/ld+json">
# {"@context":"http://schema.org","@type":"ItemList","numberOfItems":50,
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
s。我的问题是s只有 1 个属性 ( type) 并且似乎没有任何子标签。
您可以使用s.text来获取脚本的内容。它是 JSON,因此您可以使用json.loads. 从那里,这是简单的字典访问:
import json
from bs4 import BeautifulSoup
import requests
link = 'https://stackoverflow.com/jobs?med=site-ui&ref=jobs-tab&sort=p'
r = requests.get(link)
soup = BeautifulSoup(r.text, 'html.parser')
s = soup.find('script', type='application/ld+json')
urls = [el['url'] for el in json.loads(s.text)['itemListElement']]
print(urls)
Run Code Online (Sandbox Code Playgroud)