我正在構建一個非常簡單的beautifulsoup/requests web scraper,但是在作業網站上運行它時,錯誤
AttributeError:“NoneType”物件沒有屬性“find_all”
出現。這是我的代碼:
import requests
from bs4 import BeautifulSoup
URL = "https://uk.indeed.com/jobs?q&l=Norwich, Norfolk&vjk=139a4549fe3cc48b"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(id="ResultsContainer")
job_elements = results.find_all("div", class_="resultContent")
python_jobs = results.find_all("h2", string="Python")
for job_element in job_elements:
title_element = job_element.find("h2", class_="jobTitle")
company_element = job_element.find("span", class_="companyName")
location_element = job_element.find("div", class_="companyLocation")
print(title_element)
print(company_element)
print(location_element)
print()
有誰知道問題是什么?
uj5u.com熱心網友回復:
檢查您的選擇器的results屬性id應該是resultsBody. 錯誤的選擇器會導致使用 的行出現錯誤results,因為None沒有屬性:
results = soup.find(id="resultsBody")
而且job_elements它是 td 而不是 div:
job_elements = results.find_all("td", class_="resultContent")
您還可以使用以下鏈接選擇器css selectors:
job_elements = soup.select('#resultsBody td.resultContent')
僅獲取包含以下內容的內容Python:
job_elements = soup.select('#resultsBody td.resultContent:has(h2:-soup-contains("Python"))')
例子
import requests
from bs4 import BeautifulSoup
URL = "https://uk.indeed.com/jobs?q&l=Norwich, Norfolk&vjk=139a4549fe3cc48b"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
results = soup.find(id="resultsBody")
job_elements = results.find_all("td", class_="resultContent")
python_jobs = results.find_all("h2", string="Python")
for job_element in job_elements:
title_element = job_element.find("h2", class_="jobTitle")
company_element = job_element.find("span", class_="companyName")
location_element = job_element.find("div", class_="companyLocation")
print(title_element)
print(company_element)
print(location_element)
print()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448296.html
標籤:Python 网页抓取 美丽的汤 html解析 python-请求-html
