【发布时间】:2018-10-05 10:42:35
【问题描述】:
我是一个新手,只是想遵循automate the boring stuff webscraping example 中的 webscraping 示例。我正在尝试的是在一个 python 代码中自动从phdcomics 下载图像
从HTML中找到图片的链接,然后下载
从 HTML 中找到上一页的链接,然后到那里重复步骤 1,直到第一页。
对于下载当前页面的图片,打印soup.prettify()后的HTML代码段是这样的-
<meta content="Link to Piled Higher and Deeper" name="description">
<meta content="PHD Comic: Remind me" name="title">
<link
href="http://www.phdcomics.com/comics/archive/phd041218s.gif" rel="image_src">
<div class="jumbotron" style="background-color:#52697d;padding: 0em 0em 0em; margin-top:0px; margin-bottom: 0px; background-image: url('http://phdcomics.com/images/bkg_bottom_stuff3.png'); background-repeat: repeat-x;">
<div align="center" class="container-fluid" style="max-width: 1800px;padding-left: 0px; padding-right:0px;">
然后当我写的时候
newurl=soup.find('link', {'rel': "image_src"}).get('href')
它给了我我需要的东西,那就是
"http://www.phdcomics.com/comics/archive/phd041218s.gif"
下一步当我想找到上一页链接时,我相信它在HTML代码的以下部分-
<!-- Comic Table --!>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right" valign="top">
<a href=http://phdcomics.com/comics/archive.php?comicid=2004><img height=52 width=49 src=http://phdcomics.com/comics/images/prev_button.gif border=0 align=middle><br></a><font
face=Arial,Helvetica,Geneva,Swiss,SunSans-Regular size=-1><i><b>previous </b></i></font><br><br><a href=http://phdcomics.com/comics/archive.php?comicid=1995><img src=http://phdcomics.com/comics/images/jump_bck10.gif border=0></a><br><a href=http://phdcomics.com/comics/archive.php?comicid=2000><img src=http://phdcomics.com/comics/images/jump_bck5.gif border=0></a><br><font face=Arial,Helvetica,Geneva,Swiss,SunSans-Regular size=-1><i><b>jump</b></i></font><br><br><a href=http://phdcomics.com/comics/archive.php?comicid=1><img src=http://phdcomics.com/comics/images/first_button.gif border=0 align=middle><br></a><font face=Arial,Helvetica,Geneva,Swiss,SunSans-Regular size=-1><i><b>first</b></i></font><br><br> </td>
<td align="center" valign="top"><font color="black">
从这部分代码我要找的
=http://phdcomics.com/comics/archive.php?comicid=2004
作为我之前的链接。 当我尝试这样的事情时 -
Prevlink=soup.find('a',{'src': 'http://phdcomics.com/comics/images/prev_button.gif'}).get('href')
print(Prevlink)
它给了我这样的错误-
Prevlink=soup.find('a',{'src': 'http://phdcomics.com/comics/images/prev_button.gif'}).get('href')
AttributeError: 'NoneType' object has no attribute 'get'
即使我尝试这样做-
Prevlink=soup.find('a',{'href': 'http://phdcomics.com/comics/archive.php?comicid=2004'}).get('href')
print(Prevlink)
我收到类似的错误 -
Prevlink=soup.find('a',{'href': 'http://phdcomics.com/comics/archive.php?comicid=2004'}).get('href')
AttributeError: 'NoneType' object has no attribute 'get'
获得正确'href'的正确方法应该是什么? TIA
【问题讨论】:
标签: python html web-scraping beautifulsoup