最近在学python,写个简单的爬虫来练练手。
思路
为了爬取的速度,所以目的是写个多线程的爬虫来爬取知乎的图片。
大致思路是模拟用户登录,从首页进入,下载其中的所有图片,并存储首页中的链接,然后再递归的查询存储的链接,下载图片,如此循环。
代码中用到的数据结构:
download_image_queue 队列,用来存储所有的链接。 会有多个下载图片的线程通过竞争从这个队列中pop出链接,然后下载其中的图片
generate_url_queue 队列,用来通过链接来查找链接。从download_image_queue pop出来的链接,除了下载其中的图片外,还需要put到这个队列中,有一个单独的线程来从这个队列中pop出链接,来查找这个链接中的其他所有链接,并存入download_image_queue队列。
queried_set Set集合,用于存储已经查询过的链接,避免陷入死循环
代码
1 | from bs4 import BeautifulSoup |