【新手】python爬虫遍历贴吧用户
当前blog已不再更新,请移步新家:moozik.cn
想法是遍历学校贴吧的用户,获取用户的数据用来分析,因为是初学python,就一点一点的写,变量命名也不规范,见谅
系统:windows
版本:python 3.5
#获取河北大学工商学院吧1000页以内的用户 import urllib.request
import re
url='http://tieba.baidu.com/f/like/furank?kw=%BA%D3%B1%B1%B4%F3%D1%A7%B9%A4%C9%CC%D1%A7%D4%BA&pn=' webfile=open('tieba.txt','w') for each in range(1000):
url2=url+str(each+1) webdata=urllib.request.urlopen(url2).read() webdata = webdata.decode('gbk') userdata=re.findall('<table(.*?)</table>',webdata,re.S) webfile.write(userdata[1]+'\n')
print(str(each+1)+'page done!') webfile.close()
上面的代码遍历了贴吧排名页面的前1000页,截取了网页中需要分析的段落,并存储在文件中
import re #打开tieba.txt用于读取
tiebadata=open('tieba.txt','r')
userlist=open('user.txt','w')
tmp=tiebadata.readline()
i=1
while not tmp=='':
print(i)
list=re.findall('<a.*?>(.*?)</a>.*?<td class="drl_item_title"><div class="bg_lv(\d+)"><span>.*?<td class="drl_item_exp"><span>(\d+)</span>',tmp)
for each in list:
userlist.write(each[0]+','+each[1]+','+each[2]+'\n')
tmp=tiebadata.readline()
i=i+1 userlist.close()
tiebadata.close()
上面读取了tieba.txt文件,每次读取一行,使用正则表达式截取了用户名,等级,经验值三个数据,保存在了user.txt
#获取所有用户的详细信息 import re
import urllib.request
import urllib.parse userlist=open('user.txt','r')
userlist2=open('usermore.txt','w') text=userlist.read()
userlist.close()
alluser=text.split('\n')
i=1
for each in alluser:
user2=each.split(',')
api='http://tieba.baidu.com/home/get/panel?ie=utf-8&un='
web=urllib.request.urlopen(api+urllib.parse.quote(user2[0])).read()
#使用web.decode('unicode_escape')解码unicode编码的汉字
web=web.decode('unicode_escape') usertmp=re.findall('"id":(\d+).*?"sex":"(.*?)","tb_age":(.*?),"post_num":(.*?),',web) userlist2.write(each+','+str(','.join(usertmp[0]))+'\n') print(str(i)+user2[0])
i=i+1
userlist2.close()
上面这段代码是有问题的,总是爆出一个错误,IndexError: list index out of range,显示写文件那一行出错,在pychrm中执行了几行就报错,在命令行中还执行的多一些,现在还是很费解,希望有了解的前辈解答一下。
上面这一段是读取user.txt,直接使用\n分割文本,制造了一个大列表,然后使用for循环,我觉得这里是不是按行读取会更好一些。
循环中,使用用户id组合url获取更多的用户数据,因为百度的接口获取的数据的文本不是明文,所以这里使用decode解码,之后依然是使用正则获取了用户的数字id,性别,吧龄,发帖数。之后print变量i用户在命令行中查看进度。
因为不是多线程的,程序的效率真的非常的低。
希望下次可以做得更好。
【新手】python爬虫遍历贴吧用户的更多相关文章
- python爬虫(3)——用户和IP代理池、抓包分析、异步请求数据、腾讯视频评论爬虫
用户代理池 用户代理池就是将不同的用户代理组建成为一个池子,随后随机调用. 作用:每次访问代表使用的浏览器不一样 import urllib.request import re import rand ...
- 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)
为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- python爬虫之User-Agent用户信息
python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...
- Python爬虫笔记【一】模拟用户访问之设置请求头 (1)
学习的课本为<python网络数据采集>,大部分代码来此此书. 网络爬虫爬取数据首先就是要有爬取的权限,没有爬取的权限再好的代码也不能运行.所以首先要伪装自己的爬虫,让爬虫不像爬虫而是像人 ...
- 适合新手练习的Python项目有哪些?Python爬虫用什么框架比较好?
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. Python爬虫一般用什么框架比较好?一般来讲,只有在遇到比较大型的需求时 ...
- python爬虫基础要学什么,有哪些适合新手的书籍与教程?
一,爬虫基础: 首先我们应该了解爬虫是个什么东西,而不是直接去学习带有代码的内容,新手小白应该花一个小时去了解爬虫是什么,再去学习带有代码的知识,这样所带来的收获是一定比你直接去学习代码内容要多很多很 ...
- python 爬虫新手入门教程
python 爬虫新手教程 一.什么是爬虫 爬虫就是把一个网站里的内容读取下来 这里我们就要学习一个知识 我们看到的网页是有一种叫HTML的语言编写的 他可以给文字显示不同的样式 如:<p> ...
- Python爬虫beautifulsoup4常用的解析方法总结(新手必看)
今天小编就为大家分享一篇关于Python爬虫beautifulsoup4常用的解析方法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧摘要 如何用beau ...
随机推荐
- 第六篇——初尝Python,意犹未尽
作业2的要求是选一个你从来没有学过的编程语言,试一试实现基本功能.那么在这里我准备学习Python语言进行学习,并尝试用Python写一写东西. http://www.runoob.com/ Pyth ...
- yate: windows下源码下载,配置,编译
源码下载:使用svn下载checkout:http://voip.null.ro/svn/yate/trunk 配置:(本人使用的是vs2008,故下载的qt工具都是对应2008) 1. 下载并安装q ...
- 基于Bayes和KNN的newsgroup 18828文本分类器的Python实现
向@yangliuy大牛学习NLP,这篇博客是数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(上)的Python实现.入门为主,没有太多自己的东西. 1. ...
- api将一统江湖,再无app
api的出现,使人们可以通过各种软硬件设备获取所需服务,而不需要安装臃肿的app:今后的智能设备将不再依赖软件.操作系统和硬件,或许一台51单片机都可以提供给用户所需信息.当然连名字都可以简单到不叫a ...
- codeforces 722C (并查集)
题目链接:http://codeforces.com/contest/722/problem/C 题意:每次破坏一个数,求每次操作后的最大连续子串和. 思路:并查集逆向操作 #include<b ...
- Configure the Windows Firewall to Allow SQL Server Access
参考微软链接: https://msdn.microsoft.com/zh-tw/library/cc646023.aspx
- WeView 里引用的H5中的文字 到行末尾 文字被切割
这个情况 在iPhone6以上没问题 以下有问题 具体情况是 我用以下代码计算内容的高度 NSString *injectionJSString = @"var script = doc ...
- DeepLearning入门笔记(一),准备工作与注意事项
本文记录了安装theano.keras.tensorflow以及运行tutorial程序时遇到的一些问题,供后人参考. 实验机器:联想笔记本,i7-6700HQ,GTX960M,16G内存,SSD硬盘 ...
- PowerDesigner生成Oracle数据库时,表名会带引号问题
使用PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号.其实加引号是PL/SQL的规范,数据库会严格按照""中的名称建表,如果没有& ...
- c#读取XML
http://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html ================================= ...