python - 如何列出所有 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)
谢谢你。
解决方案
您需要使用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]
推荐阅读
- javascript - 谁能帮我更新这个 javascript 以创建指向另一个页面的链接
- html - 无法对齐移动设备的品牌标识、图标和汉堡菜单按钮
- android - startActivityForResult 不能在片段中工作并且不能启动活动
- rust - 为什么我可以返回一个寿命不够长的值的引用?
- scala - 在 Dataframe 的列中添加缺失的类别
- c# - 在 Web API、实体框架中使用 n 层架构时,数据访问层中的上下文为空
- java - Java 应用程序如何知道是否创建了新的 JIRA 票证?
- c# - geckodriver 找不到实体问题
- python - 无法将字符串格式的日期转换为日期时间对象
- angular - 没有路由器插座的延迟加载的角度模块不起作用