为了账号安全,请及时绑定邮箱和手机立即绑定

xpath获取Python中的元素列表

xpath获取Python中的元素列表

慕码人2483693 2021-04-05 13:15:20
我正在尝试从看起来像这样的页面中抓取元素列表:<div class="container">    <b>1</b>    <b>2</b>    <b>3</b></div><div class="container">    <b>4</b>    <b>5</b>    <b>6</b></div>我想使用xpath获取列表或元组:[1,2,3],[4,5,6] ...在页面上使用for循环,我得到每个列表的第一个元素或所有数字作为一个列表。你能帮我解决这个问题吗?预先感谢您的任何帮助!
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

对于静态页面的Web抓取,最好使用bs4软件包。并使用bs4可以轻松实现您的目标,如下所示:


from bs4 import BeautifulSoup

source = """<div class="container">

    <b>1</b>

    <b>2</b>

    <b>3</b>

</div>

<div class="container">

    <b>4</b>

    <b>5</b>

    <b>6</b>

</div>"""

soup = BeautifulSoup(source, 'html.parser')  # parse content/ page source

soup.find_all('div', {'class': 'container'})  # find all the div element (second argument is optional mentioned to scrape/find only element with attribute value)

print([[int(x.text) for x in i.find_all('b')] for i in soup.find_all('div', {'class': 'container'})])  # get list of all div's number list as you require

输出:


[[1, 2, 3], [4, 5, 6]]


查看完整回答
反对 回复 2021-04-27
?
PIPIONE

TA贡献1829条经验 获得超9个赞

您可以使用此xpath表达式,这将给您两个字符串

.//*[@class='container']    ➡ '1 2 3', '4 5 6'

如果您希望使用6根琴弦

.//*[@class='container']/b  ➡ '1','2','3','4','5','6'

尽管您必须将xpath表达式分开,以获取所需的确切信息

.//*[@class='container'][1]/b  ➡ '1','2','3'
.//*[@class='container'][2]/b  ➡ '4','5','6'


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 323 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号