所以我被困在这里了。我是一名医生,所以我的编程背景和技能几乎没有,很可能这就是问题所在。我正在努力学习Python的一些基础知识,对我来说,最好的方法就是做一些事情
该项目:
使用的一些链接:
http://coleccaoargonauta.blogspot.com/2011/09/1-perdidos-na-estratosfera.html
http://coleccaoargonauta.blogspot.com/2011/09/n-2-o-estranho-mundo-de-kilsona.html
http://coleccaoargonauta.blogspot.com/2011/09/n-3-ultima-cidade-da-terra.html
http://coleccaoargonauta.blogspot.com/2011/09/n-4-nave-sideral.html
http://coleccaoargonauta.blogspot.com/2011/09/n-5-o-universo-vivo.html
那个网站结构搞砸了。 链接位于类为“post title entry title”的div内,该类又有两个或多个“分隔符”类div,这些类div可以有内容,也可以为空。 到目前为止,我能说的是95%的时间我想要的是前两个“separator”类DIV中的最后两个链接。对于这个阶段来说,这已经足够好了
我的代码如下:
#intro
r=requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
#select the first teo 'separator' divs
separador = soup.select("div.separator")[:2]
#we need a title for each page - for debugging and later used to rename images
titulo = soup.find_all("h3", {"class": "post-title entry-title"})[0]
m = titulo.string
print (m)
#the find all links loop
for div in separador:
imagens = div.find_all('a')
for link in imagens:
print (link['href'], '\n')
我现在能做的是:
示例输出
2-O Estranho Mundo de Kilsona.jpg
http://3.bp.blogspot.com/-tAyl2wdRT1g/UPfbGczmv2I/AAAAAAAAB0M/mP71TRQIg3c/s1600/2+-+O+Estranho+Mundo+de+Kilsona.jpg
http://4.bp.blogspot.com/-D0cUIP8PkEU/UPfbByjSuII/AAAAAAAAB0E/LP6kbIEJ_eI/s1600/Argonauta002.jpg
http://3.bp.blogspot.com/-tAyl2wdRT1g/UPfbGczmv2I/AAAAAAAAB0M/mP71TRQIg3c/s1600/2+-+O+Estranho+Mundo+de+Kilsona.jpg
但我希望是这样
2-O Estranho Mundo de Kilsona.jpg
http://4.bp.blogspot.com/-D0cUIP8PkEU/UPfbByjSuII/AAAAAAAAB0E/LP6kbIEJ_eI/s1600/Argonauta002.jpg
http://3.bp.blogspot.com/-tAyl2wdRT1g/UPfbGczmv2I/AAAAAAAAB0M/mP71TRQIg3c/s1600/2+-+O+Estranho+Mundo+de+Kilsona.jpg
有人能解释一下吗
您可以使用CSS选择器使用类分隔符(link to docs)直接从div提取图像
我还使用list comprehension代替for循环
下面是列表中url的工作示例
问题是由于在循环中调用了行
imagens = div.find_all('a')
。这将创建一个list
的lists
。因此,我们需要找到一种方法,将它们扁平化为一个列表。我在下面用merged_list = [] [merged_list.extend(list) for list in imagens]
行来做这件事然后,我从这里创建一个只包含链接的新列表,然后通过使用
set
调用来删除该列表的重复数据(当您不需要重复数据时,set
是一种有用的数据结构)。然后,我将其转换回list
,然后返回到您的代码相关问题 更多 >
编程相关推荐