BeautifulSoup抓取每个<li>中的第一个标题标签

企业故事

我有一些通过Wikipedia上的节目或电影的演员表清单的代码。刮除所有演员的名字并将其存储。我在当前代码中找到<a>列表中的所有代码并存储其标题标签。目前情况如下:

from bs4 import BeautifulSoup
URL = input() 
website_url = requests.get(URL).text   
section = soup.find('span', id='Cast').parent

Stars = []
for x in section.find_next('ul').find_all('a'):
    title = x.get('title')
    print (title)
    if title is not None:
        Stars.append(title)
    else:
        continue

尽管这部分起作用,但有两个缺点:

  1. 如果演员没有Wikipedia页面超链接,则无法使用。
  2. 它还会刮擦找到的任何其他超链接标题。例如https://en.wikipedia.org/wiki/Indiana_Jones_and_the_Kingdom_of_the_Crystal_Skull返回['Harrison Ford', 'Indiana Jones (character)', 'Bullwhip', 'Cate Blanchett', 'Irina Spalko', 'Bob cut', 'Rosa Klebb', 'From Russia with Love (film)', 'Karen Allen', 'Marion Ravenwood', 'Ray Winstone', 'Sallah', 'List of characters in the Indiana Jones series', 'Sexy Beast', 'Hamstring', 'Double agent', 'John Hurt', 'Ben Gunn (Treasure Island)', 'Treasure Island', 'Courier', 'Jim Broadbent', 'Marcus Brody', 'Denholm Elliott', 'Shia LaBeouf', 'List of Indiana Jones characters', 'The Young Indiana Jones Chronicles', 'Frank Darabont', 'The Lost World: Jurassic Park', 'Jeff Nathanson', 'Marlon Brando', 'The Wild One', 'Holes (film)', 'Blackboard Jungle', 'Rebel Without a Cause', 'Switchblade', 'American Graffiti', 'Rotator cuff']

有没有办法让BeautifulSoup刮擦每个单词之后的前两个单词<li>甚至是我尝试做的更好的解决方案?

对冲猪

您可以使用css选择器仅获取<a>a中的第一个<li>

for x in section.find_next('ul').select('li > a:nth-of-type(1)'):

from bs4 import BeautifulSoup
URL = 'https://en.wikipedia.org/wiki/Indiana_Jones_and_the_Kingdom_of_the_Crystal_Skull#Cast'
website_url = requests.get(URL).text   
soup = BeautifulSoup(website_url,'lxml')
section = soup.find('span', id='Cast').parent

Stars = []
for x in section.find_next('ul').select('li > a:nth-of-type(1)'):
        Stars.append(x.get('title'))
Stars

输出量

['Harrison Ford',
 'Cate Blanchett',
 'Karen Allen',
 'Ray Winstone',
 'John Hurt',
 'Jim Broadbent',
 'Shia LaBeouf']

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery用类名计算每个第一个li元素

来自分类Dev

如何使内容 li 标签在第一个文本中对齐

来自分类Dev

如何从主div标签下的第一个sub div标签中抓取文本

来自分类Dev

在到达字符串中的第一个p标签之前删除所有li标签

来自分类Dev

使用BeautifulSoup在HTML文件中查找第一个标签

来自分类Dev

使用BeautifulSoup在HTML文件中查找第一个标签

来自分类Dev

如何在xpath的帮助下提取每个组中的第一个html标签?

来自分类Dev

用jQuery仅选择第一个ul中的最后一个li

来自分类Dev

slideToggle()使第一个li跳上单击

来自分类Dev

获取第一个li Simple DOM Parser

来自分类Dev

选择第一个在前的LI元素

来自分类Dev

jQuery模拟单击第一个li项

来自分类Dev

如何定位内部ul的第一个li?

来自分类Dev

如何使用jQuery在最后一个li之后显示第一个li

来自分类Dev

如何使用PHP从ul li标记中抓取每个数据值?

来自分类Dev

定位嵌套标签内每个标签的第一个元素n次

来自分类Dev

为什么<ul>中的样式仅影响第一个<li>?

来自分类Dev

JavaScript无法将焦点设置为ul中的第一个li元素

来自分类Dev

如何对嵌套结构中的第一个LI元素应用粗体

来自分类Dev

如何从ul列表中的第一个li获取ID

来自分类Dev

获取所单击的li中的第一个div的ID

来自分类Dev

如何检测<li>中的第一个nodeType是nodeType 1,然后是nodeType 3?

来自分类Dev

如何检测<li>中的第一个nodeType是nodeType 1,然后是nodeType 3?

来自分类Dev

在下拉列表的第一个 li 中添加自定义文本

来自分类Dev

如何选择无序列表中的第一个 <li>?

来自分类Dev

Python网络抓取并获取其类的第一个div标签的内容

来自分类Dev

使用li:first-child将获取给定类中的所有第一个li元素

来自分类Dev

为什么第一个带flexslider的<li>在我的代码中显示为空白<li>?

来自分类Dev

只抓取每个页面的第一个结果

Related 相关文章

  1. 1

    jQuery用类名计算每个第一个li元素

  2. 2

    如何使内容 li 标签在第一个文本中对齐

  3. 3

    如何从主div标签下的第一个sub div标签中抓取文本

  4. 4

    在到达字符串中的第一个p标签之前删除所有li标签

  5. 5

    使用BeautifulSoup在HTML文件中查找第一个标签

  6. 6

    使用BeautifulSoup在HTML文件中查找第一个标签

  7. 7

    如何在xpath的帮助下提取每个组中的第一个html标签?

  8. 8

    用jQuery仅选择第一个ul中的最后一个li

  9. 9

    slideToggle()使第一个li跳上单击

  10. 10

    获取第一个li Simple DOM Parser

  11. 11

    选择第一个在前的LI元素

  12. 12

    jQuery模拟单击第一个li项

  13. 13

    如何定位内部ul的第一个li?

  14. 14

    如何使用jQuery在最后一个li之后显示第一个li

  15. 15

    如何使用PHP从ul li标记中抓取每个数据值?

  16. 16

    定位嵌套标签内每个标签的第一个元素n次

  17. 17

    为什么<ul>中的样式仅影响第一个<li>?

  18. 18

    JavaScript无法将焦点设置为ul中的第一个li元素

  19. 19

    如何对嵌套结构中的第一个LI元素应用粗体

  20. 20

    如何从ul列表中的第一个li获取ID

  21. 21

    获取所单击的li中的第一个div的ID

  22. 22

    如何检测<li>中的第一个nodeType是nodeType 1,然后是nodeType 3?

  23. 23

    如何检测<li>中的第一个nodeType是nodeType 1,然后是nodeType 3?

  24. 24

    在下拉列表的第一个 li 中添加自定义文本

  25. 25

    如何选择无序列表中的第一个 <li>?

  26. 26

    Python网络抓取并获取其类的第一个div标签的内容

  27. 27

    使用li:first-child将获取给定类中的所有第一个li元素

  28. 28

    为什么第一个带flexslider的<li>在我的代码中显示为空白<li>?

  29. 29

    只抓取每个页面的第一个结果

热门标签

归档