我正试图在amazon页面中提取作者的名字。问题是,有那么多具有相同类的标记,并且没有其他属性来标识确切的元素。现在我想提取作者的名字。它存在于第二个跨度标签中。
<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&sr=8-2">Arthur Conan Doyle</a></span></div>
尽我们所能,对于两个span标记都有一个相同的类。我想要更多的第二个跨tag.And,a标记并不存在于所有的块中。因此,我只能使用span标记来提取作者的名字。我怎么知道作者的名字?
我使用的BeautifulSoup和selenium.My代码是:
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)发布于 2017-11-16 11:26:30
为"span“找到上面的"div”元素。然后提取div tag.As u的整个文本,在每个代码块中都会有一个"by“子字符串。使用它来拆分文本并将其复制到d"Author“部分。如果"by“不存在,则在使用If条件将其复制到字典之前进行检查。如果你直接复制,那么你可能会得到数组的约束异常。那就用如果。
以下是代码:
temp = authors[value].text
temp1 = temp.split("by")
#print(temp[1])
if temp1[0]!=temp:
d["Author"] = temp1[1]
else:
d["Author"] = "None"https://stackoverflow.com/questions/47326966
复制相似问题