首页 > 解决方案 > 如何列出所有 h2、h3 和 p 标签,然后创建一个数据框来存储它们

问题描述

我给了一个网站来抓取所有关键项目

但我得到的输出仅适用于使用BeautifulSoup4. 所以想知道我是否需要使用任何东西soup.findall来从网站中提取列表中的所有关键项目。

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

url=
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')

column= soup.find(class_ = re.compile('columns is-multiline'))
print(column.prettify())

position = column.h2.text
company = column.h3.text
city_state= column.find_all('p')[-2].text
print (position, company, city_state)

谢谢你。

标签: pythonurlweb-scrapingbeautifulsoup

解决方案


您需要使用find_all这样的方式获取所有元素。find只获取第一个元素。

titles = soup.find_all('h2', class_='title is-5')
companies = soup.find_all('h3', class_='subtitle is-6 company')
locations = soup.find_all('p', class_='location')
# loop over locations and extract the city and state
for location in locations:
   city = location.split(', ')[0]
   state = location.split(', ')[1]

推荐阅读