现在python很是火爆,我也忍不住去学习了一下,发现这门语言非常简单,可以用很简单的代码写出很流弊的东西,当然每门语言都有很多坑。我学习了一些基础知识便尝试写了一个爬虫,爬取百度图片,在这里分享一下我的代码。
想要爬取网络上的东西首先要了解网页结构,我们使用百度图片搜索“美女”,我们会发现网页是这样子的:
直接查看网页源代码,发现图片的网址都是这样的:
"objURL":"http://a.hiphotos.baidu.com/baike/c0=baike60,5,5,60,20;t=gif/sign=e8c6820dad4bd11310c0bf603bc6cf6a/d1a20cf431adcbef565a1878acaf2edda3cc9f65.jpg"
这还不简单?直接上代码:
from urllib import request
import re
def getHtml(url):
page = request.urlopen(url)
html = page.read()
return html
def getImg(html):
reg = '"objURL":"(.*?)",'
imgre = re.compile(reg)
html = html.decode('utf-8')
print(html)
imglist = re.findall(imgre, html)
print("发现%s个匹配对象"%imglist.__len__())
x = 0
for imgurl in imglist:
request.urlretrieve(imgurl, '%s.jpg' % x)
x+=1
return x
html = getHtml("https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=美女&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=111111")
getImg(html)
咦?我们发现爬虫爬了一些就不爬了,我们再看一下网页,我们发现它是动态加载的,每下滑一段距离就加载一些图片,没有换页的按钮,那怎么爬呢?我们看一下他的网址: