赞
踩
在当今大数据时代,了解一个人的方式已经发生了变化。我们通常会通过浏览他们的微博、朋友圈以及听取朋友的看法来获取信息。尤其是对于我们喜欢的明星,我们会经常浏览他们的微博,以了解他们的最新动态。随着数据成为不可或缺的一部分,Python已经成为获取数据的首选工具。在这个博客中,我将分享如何通过Python优化数据收集的过程,使我们能够更深入地了解我们关注的人。本文带大家使用python加入代理池爬取微博爱豆信息存入excel。
装好我们需要的模块,xlrd、xlutils都是用于excel操作
pip install xlrd
pip install xlutils
使用代理解决反反爬虫问题,免费代理ip自行百度
# -*- coding: utf-8 -*- import urllib.request import json import xlrd from xlutils.copy import copy # 设置IP代理池子 proxy_addr = ["110.52.235.100:9999", "117.95.200.86:9999", "113.128.10.121:9999", "49.86.181.235:9999", "121.225.52.143:9999", "111.177.186.27:9999", "175.155.77.189:9999", "110.52.235.120:9999", "113.128.24.189:9999", "163.204.242.51:9999"] def read_url(num): data = xlrd.open_workbook('readtest.xls') # 打开Excel文件读取数据 table = data.sheet_by_name(u'5000条抖音用户数据') # 通过名称获取工作表 url = str(table.cell(num, 1).value) if url != '': id = url[-10:] return id # 获取单元格 else: return 0 # 定义页面打开函数 def use_proxy(url, proxy_addr): req = urllib.request.Request(url) req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0") # 浏览器标识符 proxy = urllib.request.ProxyHandler({'http': proxy_addr}) opener = urllib.request.build_opener(proxy, urllib.request.HTTPHandler) urllib.request.install_opener(opener) data = urllib.request.urlopen(req).read().decode('utf-8', 'ignore') return data # 获取微博大V账号的用户基本信息,如:微博昵称、微博地址、微博头像、关注人数、粉丝数、性别、等级等 def get_userInfo(id, i): url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value=' + id data = use_proxy(url, proxy_addr[i]) print(proxy_addr[i]) content = json.loads(data).get('data') try: # 试错有没有不存在的url profile_image_url = content.get('userInfo').get('profile_image_url') # 主页地址 description = content.get('userInfo').get('description') # 微博说明 profile_url = content.get('userInfo').get('profile_url') # 头像地址 verified = content.get('userInfo').get('verified') # 认证状态 guanzhu = content.get('userInfo').get('follow_count') # 关注 name = content.get('userInfo').get('screen_name') # 名字 fensi = content.get('userInfo').get('followers_count') # 粉丝 gender = content.get('userInfo').get('gender') # 性别 urank = content.get('userInfo').get('urank') # 微博等级 alldata = name + '+' + profile_url + '+' + profile_image_url + '+' + str( verified) + '+' + description + '+' + str(guanzhu) + '+' + str(fensi) + '+' + gender + '+' + str(urank) list = alldata.split('+') print(list) book = xlrd.open_workbook("savetest.xls") # 打开文件 nr = book.sheet_by_index(0).nrows # 打开工作表的行数 book_copy = copy(book) # 复制原来的文件 sheet = book_copy.get_sheet(0) # 打开复制的工作表 u = list for i in range(u.__len__()): sheet.write(nr, i, u[i]) # 在nr行往后写i个数据,数据在u[i]中 book_copy.save("savetest.xls") except AttributeError: book = xlrd.open_workbook("savetest.xls") # 打开文件 nr = book.sheet_by_index(0).nrows # 打开工作表的行数 book_copy = copy(book) # 复制原来的文件 sheet = book_copy.get_sheet(0) # 打开复制的工作表 u = [' '] for i in range(u.__len__()): sheet.write(nr, i, u[i]) # 在nr行往后写i个数据,数据在u[i]中 book_copy.save("savetest.xls") if __name__ == "__main__": for i in range(0, 50000): print(i) url = read_url(i) i = i // 100 # 输出100个换个ip if url != 0: get_userInfo(url, i) else: book = xlrd.open_workbook("savetest.xls") # 打开文件 nr = book.sheet_by_index(0).nrows # 打开工作表的行数 book_copy = copy(book) # 复制原来的文件 sheet = book_copy.get_sheet(0) # 打开复制的工作表 u = [' '] for i in range(u.__len__()): sheet.write(nr, i, u[i]) # 在nr行往后写i个数据,数据在u[i]中 book_copy.save("savetest.xls")
readtest.xls文件内容
爬取保存的结果savetest.xls
有任何疑问和想法,欢迎在评论区与我交流。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。