首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用find_all()提取所需的元素

如何使用find_all()提取所需的元素
EN

Stack Overflow用户
提问于 2017-11-16 10:16:00
回答 1查看 74关注 0票数 0

我正试图在amazon页面中提取作者的名字。问题是,有那么多具有相同类的标记,并且没有其他属性来标识确切的元素。现在我想提取作者的名字。它存在于第二个跨度标签中。

代码语言:javascript
复制
<div class="a-row a-spacing-none">
<span class="a-size-small a-color-secondary">by </span>
<span class="a-size-small a-color-secondary"><a class="a-link-normal a-text-normal" href="/Arthur-Conan-Doyle/e/B000AQ43GQ/ref=sr_ntt_srch_lnk_2?qid=1510823399&amp;sr=8-2">Arthur Conan Doyle</a></span></div>

尽我们所能,对于两个span标记都有一个相同的类。我想要更多的第二个跨tag.And,a标记并不存在于所有的块中。因此,我只能使用span标记来提取作者的名字。我怎么知道作者的名字?

我使用的BeautifulSoup和selenium.My代码是:

代码语言:javascript
复制
        soup=BeautifulSoup(self.driver.page_source,"html.parser")
    titles=soup.find_all("h2",{"class":"a-size-medium s-inline s-access-title a-text-normal"})
    authors=soup.find_all("span",{"class":"a-size-small a-color-secondary"})
    for value in range(len(titles)):
        d={}
        d["Title"]=titles[value].text
        d["Author"]=authors[value+2].text
        title.append(d)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 11:26:30

为"span“找到上面的"div”元素。然后提取div tag.As u的整个文本,在每个代码块中都会有一个"by“子字符串。使用它来拆分文本并将其复制到d"Author“部分。如果"by“不存在,则在使用If条件将其复制到字典之前进行检查。如果你直接复制,那么你可能会得到数组的约束异常。那就用如果。

以下是代码:

代码语言:javascript
复制
temp = authors[value].text
temp1 = temp.split("by")
#print(temp[1])
if temp1[0]!=temp:
    d["Author"] = temp1[1]
else:
    d["Author"] = "None"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47326966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档