分享一下我爬千图网的步骤,加深影响,如果能帮助大家的我也很开心,有什么不足的请提提意见,谢谢。
就是一个简简单单的爬虫,比如什么十行做爬虫,什么最简单的爬虫实例……
emmm我会用到requests库,和BeautifulSoup,(正则表达式我还没有用熟(ૢ˃ꌂ˂ૢ)。)
这两库教程也挺多,挺全,我不太熟呢还,就不多说了。
开始:
'''
根据知乎大神
代码作者:高佳乐
'''
import requests ##导入requests库
from bs4 import BeautifulSoup ##导入BeautifulSoup
qiantu = requests.get('http://www.58pic.com/') ##requests.get是向服务器发出请求,就是,hi 服务器,我要千图网的源码
html = qiantu.content ##把获取的内容输出一下,不过使用content是二进制
soup = BeautifulSoup(html,'html.parser') ##用BeautifulSoup对HTML解析,html.parser就是解析格式是html
print(soup.prettify())##这个是规范输出一下
imgs = soup.select('img[class="scrollLoading"]',limit=10)##上边输出后会发现图片都在img中,然后用BeautifulSoup里的select找到img标签class是scrollLoading属性的,然后获取10个
num = 0 #利于下边的数,我喜欢0开始,都懂得。
for i in imgs: ##因为上边img获取的是列表,要用遍历
chun = i.get('data-url')##这个get(data-url)是只要属性是data-url属性的值
print('这是%d张:%s'%(num,chun))##方便计数,i.get('data-url')是因为上边获取的是带标签的节点,
qingqiu = requests.get(chun)##因为上边只是获取了路径,所以要向服务器请求图片的内容。
try: ##异常处理
fp = open('pic\\'+str(num)+'.jpg','wb') ##fp打开一个文件,我这里没有文件就是会创建一个文件,pic\路径+num.jpg名字+wb可写模式
fp.write(qingqiu.content) ##在fp里边写入qingqiu的二进制因为一张图片是由二进制组成
fp.close() ##关闭fp文件
print('第%d张图片下载完成'%num) ##输出第--张图片下载完毕
num+=1 ##num+1 以便记录
except: ##异常处理
print("这张图片不让下载") ##如果错误就是这张图片不让下载
print('下载完成') ##完成后是下载完毕
好了我的第一个小爬虫就到这里了,有什么不足的或者错误的地方请指出。emmm下一次见