哈喽,大家好,我是一条
写了一周
leetcode
刷题,不知道大家有没有进步呢?今天写点实用的,粉丝福利!
夏天到了哈,烈日炎炎,街拍党们又可以大显身手,但是户外虽美,烈日也猛,所以还是在家看的舒服。
一条爬取了街拍网2
万张图片供大家在家观看,看到明年都够了吧!
本次用到尚街拍
这个网站,链接
主要包括:街拍、明星、穿搭技巧等
我们选择街拍的网址,打开F12
,找打图片元素对应的html
可以看到url
存放在<img>
标签里,一张图片是一个<li>
基于上面的分析,我们决定采用xpath
解析,右键——Copy Xpath,粘贴如下
//*[@id="item-372982"]/div/div[1]/a/picture/img
因为要获得所有的<li>
,我们在往上找一级
<ul class="b2_gap ">
所以按照先定位到<li>
再逐一遍历的思路,代码如下:
res = requests.get(url) html = etree.HTML(res.text) li_list = html.xpath('//*[@class="b2_gap "]/li') for li in li_list: pic_url = li.xpath("./div/div[1]/a/picture/img/@src")[0] title = li.xpath("./div/div[1]/a/picture/img/@alt")[0]
有了url我们只需再发送一次请求,保存二进制文件就可以下载图片
pic = requests.get(pic_url).content with open('./meinv/' + title + '.jpg', 'wb') as f: f.write(pic)
如上,一页的图片已经爬取成功,可我们还想要更多页,怎么办呢?
观察url
https://www.jiepai.net/jiepai/page/2
最后的page/2
好像和页面有关,我们把2
改成3
试一下
果然,成功了,那翻页就很好解决了
url = 'https://www.jiepai.net/jiepai/page/2' for i in range(0, 1): res = requests.get(url.format(i))
因为一共要爬取街拍,穿搭,美女三部分内容,共24*(69+96+606)=18504
张图片,单线程实在是耗费时间,所以为每一个方法开一个线程,加快速度
import threading if __name__ == '__main__': th1 = threading.Thread(target=get_jiepai()) th2 = threading.Thread(target=get_meinv()) th3 = threading.Thread(target=get_mingxingchuanyi()) th1.start() th2.start() th3.start()
需要源码和下载好的2万张图片的小伙伴
评论区评论【街拍】获取,感谢支持
我是一条,一个在互联网摸爬滚打的程序员。
道阻且长,行则将至。大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!
注:关于本篇博客有任何问题和建议,欢迎大家留言!