我正在尝试刮2个元素从这个url: https://www.welcometothejungle.com/fr/companies/dataiku/jobs/ai-solutions-manager-life-science_london_DATAI_a2jpa5o。CDI和LONDON,这里的问题是:
- 它们有相同的类
- 它们在同一个div
for London:
<li class="sc-1qc42fc-0 kExFnG"><span role="img" class="sc-1qc42fc-3 heity"><i name="location" class="sc-kmATbt bGKMNx"></i></span><span class="sc-1qc42fc-2 jmExaK">London</span></li>
for CDI:
<li class="sc-1qc42fc-0 kExFnG"><span role="img" class="sc-1qc42fc-3 heity"><i name="contract" class="sc-kmATbt jYkMSd"></i></span><span class="sc-1qc42fc-2 jmExaK"><span>CDI</span> </span></li>
我可以看到,这两个html代码有一个东西是不同的,一个的名字是位置,另一个合同,但我似乎找不到一种方法来使用这个信息,以刮正确的元素
我如何才能做到一个soup.find
,这将允许我提取bot元素"CDI和伦敦">
据我所知,这应该适合你:
# Get all the children of the parent of the first li with that class
lis = list(soup.find_all('li', attrs={'class': 'sc-1qc42fc-0 kExFnG'})[0].parent.children)
fields = {}
for li in lis:
fields[li.find('i').get('name')] = li.text.strip()
print(fields)
输出:
{'contract': 'CDI', 'location': 'London'}