【问题标题】:soup find elements by classs name is not working for me汤按类名查找元素对我不起作用
【发布时间】:2021-10-17 17:15:09
【问题描述】:
import requests
from bs4 import BeautifulSoup
url = 'https://www.jobs.ch/en/vacancies/detail/10541687/?source=vacancy_search_promo'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
desc = soup.find_all('div', class_= 'text')
print(len(desc))
这给了我 0 长度。我正在尝试 scrape 一个工作网站并尝试 scrape 描述 div。
【问题讨论】:
标签:
python
html
css
web-scraping
beautifulsoup
【解决方案1】:
数据存储在 javascript 中,所以 BeautifulSoup 看不到它。你可以使用re/json模块来解析它:
import re
import json
import requests
from bs4 import BeautifulSoup
url = "https://www.jobs.ch/en/vacancies/detail/10541687/?source=vacancy_search_promo"
data = re.search(r"__INIT__ = (\{.*\})", requests.get(url).text).group(1)
data = json.loads(data)
# uncomment to print all data:
# print(json.dumps(data, indent=4))
for j in data["lists"]["jobs"].values():
soup = BeautifulSoup(j["template"], "html.parser")
for t in soup.find_all(class_="text"):
print(t.get_text(strip=True, separator="\n"))
打印:
Das sollten Sie über uns wissen
MAN Energy Solutions ebnet den Weg in eine klimaneutrale Weltwirtschaft. Ob Industrieproduktion, Energie- oder maritime Wirtschaft: Wir denken ganzheitlich und packen schon heute die Herausforderungen von morgen an – für eine nachhaltige Wertschöpfung unserer Kunden. In unserem Technologieportfolio steckt die Erfahrung aus über 250 Jahren Ingenieurstradition. MAN Energy Solutions hat seinen Hauptsitz in Deutschland und beschäftigt rund 15.000 Mitarbeiter an mehr als 120 Standorten weltweit. Unsere Kunden profitieren außerdem vom globalen Service-Center-Netzwerk unserer After-Sales Marke, MAN PrimeServ.
We can offer you the following tasks
Digitization, besides decarbonization, is one of our strategic business drivers. Our growing Group Digital team is looking for a skilled
Cyber Security Engineer
...and so on.
【讨论】:
-
您不接受任何有助于解决您的问题的答案。如果有帮助,请接受答案。另请参阅help。