在 Python 中抓取时如何同时打印段落和标题?

知乎

我是python的初学者。我目前正在使用 Beautifulsoup 来抓取网站。

str='' #my_url
source = urllib.request.urlopen(str);
soup = bs.BeautifulSoup(source,'lxml');
match=soup.find('article',class_='xyz');
for paragraph in match.find_all('p'):
    str+=paragraph.text+"\n"

我的标签结构 -

<article class="xyz" >
<h4>dr</h4>
<p>efkl</p>
<h4>dr</h4>
<p>efkl</p>
<h4>dr</h4>
<p>efkl</p>
<h4>dr</h4>
<p>efkl</p>         
</article>


我得到这样的输出(因为我能够提取段落)-

 efkl
 efkl
 efkl
 efkl

我想要的输出(我想要标题和段落)-

 dr
 efkl
 dr
 efkl
 dr
 efkl
 dr
 efkl     

我希望我的输出还包含标题和段落。如何修改代码,使其在段落之前包含标题(就像在原始 HTML 中一样)。

SIM卡

你可以用不同的方法剥同一个苹果来达到目的。以下是其中一些:

使用.find_next()

from bs4 import BeautifulSoup

content="""
<article class="xyz" >
<h4>dr</h4>
<p>efkl</p>
<h4>dr</h4>
<p>efkl</p>
<h4>dr</h4>
<p>efkl</p>
<h4>dr</h4>
<p>efkl</p>         
</article>
"""
soup = BeautifulSoup(content,"lxml")

for items in soup.find_all(class_="xyz"):
    data = '\n'.join(['\n'.join([item.text,item.find_next("p").text]) for item in items.find_all("h4")])
    print(data)

使用.find_previous_sibling()

for items in soup.find_all(class_="xyz"):
    data = '\n'.join(['\n'.join([item.find_previous_sibling("h4").text,item.text]) for item in items.find_all("p")])
    print(data)

常用方法:在列表中使用多个标签:

for items in soup.find_all(class_="xyz"):
    data = '\n'.join([item.text for item in items.find_all(["h4","p"])])
    print(data)

所有三种方法都会产生相同的结果:

dr
efkl
dr
efkl
dr
efkl
dr
efkl

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试在python的Beatutifulsoap中尝试仅通过网络抓取获取文本时打印标签和元素

来自分类Dev

Python HTML Web抓取标题和标题

来自分类Dev

使用 Form() 时如何更改 Python 中的 MainWindow 标题?

来自分类Dev

如何在python中同时使用封装和继承

来自分类Dev

如何从 Python 中的输入同时附加和覆盖文件

来自分类Dev

如何在Plotly(python)中设置背景颜色和标题?

来自分类Dev

尝试如何使用Selenium和Python抓取orbitz.com时,Field XPath如何保持变化?

来自分类Dev

尝试如何使用Selenium和Python抓取orbitz.com时,Field XPath会如何变化?

来自分类Dev

抓取时摆脱python中的html标签

来自分类Dev

当网站阻止不抓取内容时,如何使用Python抓取?

来自分类Dev

如何使用python根据网站的标题抓取网站?

来自分类Dev

如何使用BeautifulSoup和Python抓取页面?

来自分类Dev

如何使用Selenium和Python抓取注释?

来自分类Dev

在漂亮的汤中打印标题和相应的段落

来自分类Dev

如何打印索引:在Python中循环列表时的值

来自分类Dev

使用Python进行网页抓取时,如何分隔列和格式化日期?

来自分类Dev

如何在使用python和Beautiful soup抓取时访问站点中的兄弟元素

来自分类Dev

使用 python 和 selenium 从表中抓取数据时遇到问题

来自分类Dev

如何使段落在python代码中可读

来自分类Dev

如何在python中修改和打印列表项?

来自分类Dev

如何打印Python列表中包含的字典的键和值

来自分类Dev

如何在python中打印字典键和值

来自分类Dev

如何在 python 3 中打印均值、中值和众数

来自分类Dev

使用Python-docx编写word文档时如何更改段落中特定文本的字体?

来自分类Dev

如何使用scrapy在Python中抓取网址

来自分类Dev

Python-获取段落文本(网页抓取)

来自分类Dev

使用Python进行网络抓取时如何删除熊猫数据框中的字符?

来自分类Dev

如何在使用python进行网络抓取时访问类HTML中的特定对象

来自分类Dev

如何在python中打印%

Related 相关文章

  1. 1

    尝试在python的Beatutifulsoap中尝试仅通过网络抓取获取文本时打印标签和元素

  2. 2

    Python HTML Web抓取标题和标题

  3. 3

    使用 Form() 时如何更改 Python 中的 MainWindow 标题?

  4. 4

    如何在python中同时使用封装和继承

  5. 5

    如何从 Python 中的输入同时附加和覆盖文件

  6. 6

    如何在Plotly(python)中设置背景颜色和标题?

  7. 7

    尝试如何使用Selenium和Python抓取orbitz.com时,Field XPath如何保持变化?

  8. 8

    尝试如何使用Selenium和Python抓取orbitz.com时,Field XPath会如何变化?

  9. 9

    抓取时摆脱python中的html标签

  10. 10

    当网站阻止不抓取内容时,如何使用Python抓取?

  11. 11

    如何使用python根据网站的标题抓取网站?

  12. 12

    如何使用BeautifulSoup和Python抓取页面?

  13. 13

    如何使用Selenium和Python抓取注释?

  14. 14

    在漂亮的汤中打印标题和相应的段落

  15. 15

    如何打印索引:在Python中循环列表时的值

  16. 16

    使用Python进行网页抓取时,如何分隔列和格式化日期?

  17. 17

    如何在使用python和Beautiful soup抓取时访问站点中的兄弟元素

  18. 18

    使用 python 和 selenium 从表中抓取数据时遇到问题

  19. 19

    如何使段落在python代码中可读

  20. 20

    如何在python中修改和打印列表项?

  21. 21

    如何打印Python列表中包含的字典的键和值

  22. 22

    如何在python中打印字典键和值

  23. 23

    如何在 python 3 中打印均值、中值和众数

  24. 24

    使用Python-docx编写word文档时如何更改段落中特定文本的字体?

  25. 25

    如何使用scrapy在Python中抓取网址

  26. 26

    Python-获取段落文本(网页抓取)

  27. 27

    使用Python进行网络抓取时如何删除熊猫数据框中的字符?

  28. 28

    如何在使用python进行网络抓取时访问类HTML中的特定对象

  29. 29

    如何在python中打印%

热门标签

归档