在这里插入图片描述前言:
最近在玩涂鸦,打算多看看别人大神的作品,学习学习。为此决定去百度图片上爬一些下来,以供学习(嘿嘿)
上菜!
还是先分析源代码找正则,直接百度图片,涂鸦,查看源代码
发现有许多JPG文件,经查看图片的网址都是这样的格式: “objURL”:“网址”
这样一来正则项就搞定了 ------ ‘“objURL”:"(.*?)",’
接下来的工作和前一篇基本相同没有什么新东西,加了些交互。
import re
import sys
import urllib
import requests
def getPage(keyword,page,n):
page=page*n
keyword=urllib.parse.quote(keyword, safe='/')
url_begin= "http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="
url = url_begin+ keyword + "&pn=" +str(page) + "&gsm="+str(hex(page))+"&ct=&ic=0&lm=-1&width=0&height=0"
return url
def get_onepage_urls(onepageurl):
try:
html = requests.get(onepageurl).text
except Exception as e:
print(e)
pic_urls = []
return pic_urls
pic_urls = re.findall('"objURL":"(.*?)",', html, re.S)
return pic_urls
def down_pic(pic_urls):
for i, pic_url in enumerate(pic_urls):
try:
pic = requests.get(pic_url, timeout=15)
string =str(i + 1) + '.jpg'
with open(string, 'wb') as f:
f.write(pic.content)
print('成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))
except Exception as e:
print('下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))
print(e)
continue
if __name__ == '__main__':
keyword = '涂鸦'
page_begin=0
page_number=30
image_number=1
all_pic_urls = []
while 1:
if page_begin>image_number:
break
print("第%d次请求数据",[page_begin])
url=getPage(keyword,page_begin,page_number)
onepage_urls= get_onepage_urls(url)
page_begin += 1
all_pic_urls.extend(onepage_urls)
down_pic(list(set(all_pic_urls)))
成果如图:
还是出于玩的目的做的这个项目,唯一的心得就是用查看器查看页面元素从而方便在源代码中查找自己想要的东西。
参考博客:https://blog.youkuaiyun.com/hust_bochu_xuchao/article/details/79431145
!彩蛋 !发一些我的作品,太好玩了都不想写代码了。。。(嘿嘿,献丑了)
下篇