python爬虫爬取微博相册
时间: 2023-10-22 18:10:40 浏览: 202
用于爬取微博信息的python爬虫程序
爬取微博相册的Python爬虫可以通过以下步骤实现:
1. 导入所需的库。
2. 初始化队列,用于存储待下载的图片链接。
3. 循环获取每一页的相册数据。
4. 解析数据,获取每张图片的链接。
5. 将图片链接添加到队列中。
6. 开启多线程,从队列中取出链接并下载对应的图片。
以下是示例代码:
```python
import requests
import random
from queue import Queue
from threading import Thread
# 初始化队列
data_queue = Queue()
# 循环获取每一页的相册数据
for i in range(1, 26):
params = {
'uid': '1739046981',
'album_id': '3581934839144367',
'count': '30',
'page': i,
'type': '3',
'__rnd': '1609667183074'
}
response = requests.get(url=url, params=params, headers=headers).json()
# 解析数据,获取每张图片的链接
photo_list = response.get('data').get('photo_list')
for photo in photo_list:
pic_name = photo.get('pic_name')
photo_url = 'https://wx4.sinaimg.cn/large/' + pic_name
# 将图片链接添加到队列中
data_queue.put({photo_id: photo_url})
# 定义爬取图片的线程类
class SpiderImg(Thread):
def __init__(self, data):
Thread.__init__(self)
self.data = data
def run(self):
# 当队列不为空的时候下载对应的图片
while not self.data.empty():
# 取队列
a = self.data.get()
# 获得id和url数据
i_id = list(a.keys())[0]
i_url = list(a.values())[0]
# 下载图片
img = requests.get(url=i_url, headers=fake, proxies=random.choice(proxy_pool)).content
# 将文件写入指定路径下的文件夹
with open('E:/SpiderImg/李荣浩/{}.jpg'.format(i_id), 'wb') as t:
t.write(img)
print(i_id + '.jpg' + ' ' * 4 + '下载完毕' + '.' * 4)
# 开启多线程,根据队列中存放的url数据,下载图片
for w in range(64):
spider = SpiderImg(data_queue)
spider.start()
```
阅读全文