Python 官方文档:入门教程 => 点击学习
一、开发工具 **python****版本:**3.6.4 相关模块: DecryptLogin模块; argparse模块; requests模块; prettytable模块;
**python****版本:**3.6.4
相关模块:
DecryptLogin模块;
argparse模块;
requests模块;
prettytable模块;
tqdm模块;
lxml模块;
fake_useragent模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
本来这个爬虫是想作为讲python异步爬虫的一个例子的,昨天代码写完测试了一下,结果是我微博账号和ip都直接被封了(并发数设的500)。
然后我去谷歌搜了一下别人写的异步爬虫教程,测试用的都是些没啥反爬措施的小网站。
于是今天改了下代码,就先整个普普通通的微博小爬虫算了。
言归正传,和之前的微博爬虫类似,我们还是先利用DecryptLogin进行微博账户的模拟登录:
'''模拟登录'''
@staticmethod
def login(username, passWord):
lg = login.Login()
_, session = lg.weibo(username, password, 'mobile')
return session
然后让使用者输入目标微博用户的id:
user_id = input('请输入目标用户ID(例如: 2168613091) ——> ')
微博用户id在这可以看到:
根据用户输入的微博用户id,我们访问如下两个链接:
然后利用xpath提取用户的基本信息:
打印这些信息,让使用者确认自己输入的微博用户id是否无误:
tb = prettytable.PrettyTable()
tb.field_names = ['用户名', '关注数量', '被关注数量', '微博数量', '微博页数']
tb.add_row([nickname, num_followings, num_followers, num_wbs, num_wb_pages])
print('获取的用户信息如下:')
print(tb)
is_download = input('是否爬取该微博用户发的所有图片?(y/n, 默认: y) ——> ')
如果无误,就开始爬取该用户发的所有微博里的图片:
'''下载所有图片'''
def __downloadImages(self, userinfos, savedir):
# 一些必要的信息
num_wbs = userinfos.get('num_wbs')
user_id = userinfos.get('user_id')
num_wb_pages = userinfos.get('num_wb_pages')
# 提取图片链接并下载图片
page_block_size = random.randint(1, 5)
page_block_count = 0
for page in tqdm(range(1, num_wb_pages+1)):
# --提取图片链接
response = self.session.get(f'https://weibo.cn/{user_id}?page={page}', headers=self.headers)
image_urls = self.__extractImageUrls(response)
# --下载图片
for url in image_urls:
try:
res = requests.get(url, headers={'user-agent': self.ua.random}, stream=True)
with open(os.path.join(savedir, url.split('/')[-1]), 'wb') as fp:
for chunk in res.iter_content(chunk_size=32):
fp.write(chunk)
print('[INFO]: Download an image from: ', url)
except:
pass
# --避免给服务器带来过大压力and避免被封, 每爬几页程序就休息一下
page_block_count += 1
if page_block_count % page_block_size == 0:
time.sleep(random.randint(6, 12))
page_block_size = random.randint(1, 5)
page_block_count = 0
这里避免爬虫被BAN的措施主要有以下几点:
从返回的微博页内容里提取图片链接时,需要注意:
大体的思路就是这样,因为其实没啥难点,就是用xpath来提取我们需要的信息就行了,所以就这么粗略地介绍一下吧。T_T
运行方式:
python weiboEmoji.py --username 用户名 --password 密码
到此这篇关于Python模拟登录微博并爬取表情包的文章就介绍到这了,更多相关Python爬取微博表情包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Python模拟登录微博并爬取表情包
本文链接: https://www.lsjlt.com/news/127460.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0