前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
看到小伙伴一张又一张不知道从何而来的表情包是不是有点羡慕?
今天小编就带大家,使用python爬取网站表情包,打造一个自己的表情包图库,让大家斗图从此永无败绩
知识点:
requests 的简单使用
css选择器的简单使用
os模块操作文件夹
文件保存
开发环境:
1.python环境:annaconda5.2.0(python3.6.5)
2.编辑器:pycharm
分析:
F12检查来获取图片在源代码的位置
每一次请求的url参数,几乎都一样,只有一个参数是不同的,那就是pn,它指的是当前页面中已经展示的图片数目。
我们所需要的信息都已经找到,那么开始编写代码吧
代码如下:
import requests
import parsel #pip install parsel
import os
import concurrent.futures
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
def get_image_url(url):
#url = 'https://www.fabiaoqing.com/bqb/lists/type/hot/page/1.html'
# 发送网络请求获取网业数据
response = requests.get(url, headers=headers)
html = response.text
# 对数据进行筛选
sel = parsel.Selector(html)
image_links = sel.css('a.bqba::attr(href)').getall()
return image_links
def get_image_info(url):
# url = 'https://www.fabiaoqing.com/bqb/detail/id/53912.html'
response = requests.get(url, headers=headers)
html = response.text
sel = parsel.Selector(html)
image_url_list = sel.css('img.bqbppdetail.lazy::attr(data-original)').getall()
folder_name = sel.css('h1.ui.header::text').re('\w+')[0]
print('正在下载\t{}\t表情包系列'.format(folder_name))
return folder_name, image_url_list
def save(folder_name, image_url_list):
for url in image_url_list:
folder_path = '表情包/{}'.format(folder_name)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
image_name = url.split('/')[-1]
file_path = folder_path + '/' + image_name
with open(file_path, mode='wb') as f:
f.write(requests.get(url, headers=headers).content)
def download_image(page_num):
url_links = get_image_url('https://www.fabiaoqing.com/bqb/lists/type/hot/page/{}.html'.format(page_num))
for url_link in url_links:
url_link = 'https://www.fabiaoqing.com' + url_link
folder_name, image_url_list = get_image_info(url_link)
save(folder_name, image_url_list)
if __name__ == '__main__':
thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=100)
for i in range(1, 1041):
thread_pool.submit(download_image, i)
thread_pool.shutdown()
最终效果图:
今天也是闲的无聊,看到好多沙雕图,就想爬下来,心情一好就爬了100页哈哈~面对五千多张表情包我也是很快乐的~
PS:如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!
来源:oschina
链接:https://my.oschina.net/u/4342648/blog/4257207