![](/img/trans.png)
[英]Beautiful Soup error: 'NoneType' object has no attribute 'find_all'
[英]NoneType object has no attribute find_all error using beautiful Soup
我正在尝试阅读以下内容:
我的目标是阅读此页面上的每个职位 - https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B%5D=&keyw=python
我试过的:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B%5D=&keyw=python'
page = requests.get(URL).text
soup = BeautifulSoup(page, 'html.parser')
results = soup.find(id='ResultsContainer')
# Look for Python jobs
python_jobs = results.find_all("div", string=lambda t: "python" in t.lower())
for p_job in python_jobs:
link = p_job.find("h3")["href"]
print(p_job.text.strip())
print(f"Apply here: {link}\n")
但我收到以下错误:
AttributeError: 'NoneType' object 没有属性 'find_all'
如何阅读所有标题?
问题是,没有任何带有id="ResultsContainer"
的标签。 您可以使用文本 Python 搜索所有<h3>
标签,然后找到 url 的父<a>
标签:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B%5D=&keyw=python'
page = requests.get(URL).text
soup = BeautifulSoup(page, 'html.parser')
results = soup.find_all('h3', text=lambda t: 'python' in t.lower())
for r in results:
print(r.text)
print(r.find_parent('a')['href'])
print('-' * 80)
印刷:
Senior Python Developer
https://www.cvbankas.lt/senior-python-developer-vilniuje/1-6719819
--------------------------------------------------------------------------------
Full Stack Engineer (React + Python)
https://www.cvbankas.lt/full-stack-engineer-react-python-vilniuje/1-6665723
--------------------------------------------------------------------------------
Python programuotojas (Mid-Senior)
https://www.cvbankas.lt/python-programuotojas-mid-senior-vilniuje/1-6693547
--------------------------------------------------------------------------------
Python Developer
https://www.cvbankas.lt/python-developer-vilniuje/1-6604883
--------------------------------------------------------------------------------
您的问题是没有元素具有 id "ResultsContainer"
。
但是参考页面的结构,您可以使用css selector
直接获取所有信息:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B%5D=&keyw=python'
page = requests.get(URL).text
soup = BeautifulSoup(page, 'html.parser')
results = soup.select("div.list_cell > .list_h3")
for i in results:
print(i.text)
结果:
Data Engineer
Data Analyst
VYRESNYSIS INŽINIERIUS STRATEGIJOS IR TYRIMŲ SKYRIUJE
Senior Python Developer
Full Stack Engineer (React + Python)
DevOps Engineer
Linux Systems Automation Engineer
Big Data Developer
Big Data Devops Engineer
Python programuotojas (Mid-Senior)
DATA SCIENTIST
DEVOPS INŽINIERIAUS (e-commerce platformos produktų optimizavimas užsienio rinkoms)
LINUX Sistemų administratorius (-ė)
QA engineer
Blockchain Developer
Backend Software Engineer
FW/HW Quality Assurance Engineer
Software developer in Test
Python Developer
Senior Backend Engineer
查看我的代码:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B%5D=&keyw=python'
page = requests.get(URL).text
soup = BeautifulSoup(page, 'html.parser')
h3_tags = soup.findAll("h3", {"class": "list_h3"})
for x in h3_tags:
if "Python" in x.text:
print(x.text)
print(x.find_parent('a')['href'])
print()
output 是:
Senior Python Developer
https://www.cvbankas.lt/senior-python-developer-vilniuje/1-6719819
Full Stack Engineer (React + Python)
https://www.cvbankas.lt/full-stack-engineer-react-python-vilniuje/1-6665723
Python programuotojas (Mid-Senior)
https://www.cvbankas.lt/python-programuotojas-mid-senior-vilniuje/1-6693547
Python Developer
https://www.cvbankas.lt/python-developer-vilniuje/1-6604883
用以下代码替换您的代码:
import requests
from lxml import etree
from bs4 import BeautifulSoup
URL = 'https://www.cvbankas.lt/?miestas=Vilnius&padalinys%5B%5D=&keyw=python'
page = requests.get(URL).text
soup = BeautifulSoup(page, 'html.parser')
dom = etree.HTML(str(soup))
elements = dom.xpath('//h3[@class="list_h3"]')
for element in elements:
print(element.text)
这个方法: soup.find(id='ResultsContainer')
没有找到符合条件的元素,因此返回None
。
在这一行中: python_jobs = results.find_all("div", string=lambda t: "python" in t.lower())
, results
的值为None
。
None.find_all
不存在。 ( AttributeError: 'NoneType' object has no attribute 'find_all'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.