【新手】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 ...
随机推荐
- Javascript常用方法函数收集(二)
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...
- Android 数据库管理— — —升级数据库
package com.example.databasetest; import android.content.Context;import android.database.sqlite.SQLi ...
- struct与union字节大小的终极解释
1.字节对齐的细节和编译器实现相关,但一般而言,如在windows下,就VC而言,满足一下三个准则:1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除:2) 结构体每个成员相对于结构体首地址 ...
- Cardinal样条曲线的Javascript实现(理论篇)
首先,要对样条曲线进行插值的原因是:希望通过给定的关键帧点生成一条希望的直线或者曲线. 1.直线插值 生成一条直线,给定直线首尾的关键点P0,P1,就能确定这条直线的特性,比如y=kx+b中的斜率k和 ...
- xmlrpc实现bugzilla api调用(无会话保持功能,单一接口请求)
xmlrpc实现bugzilla4 xmlrpc api调用(无会话保持功能,单一接口请求),如需会话保持,请参考我的另外一篇随笔(bugzilla4的xmlrpc接口api调用实现分享: xml ...
- 领域设计之模型充血、Repository对象注入
工作中接触了不少项目组,他们在实际的项目开发中,Domain Object的贫血模型设计,还是主要的应用的范式.原因在于,贫血模型模型设计中,把所有涉及持久化的业务逻辑,封装到了Domain Serv ...
- 内存管理 - MEMORY POOL
内存池优势: 效率高,频繁的new和delete效率低下 减少内存碎片,反复向系统申请和释放内存会产生大量内存碎片 防止内存泄露 内存池设计思路: 内存池可以根据实际需要,设计成不同的样子.下面是针对 ...
- iOS各版本图标尺寸汇总
About Information Property List Files UILaunchImageFile UILaunchImageFile (String - iOS) specifies t ...
- 模拟jQuery库
用js模拟jQuery方法,体会封装思想 <!DOCTYPE html><html><head><meta charset="UTF-8" ...
- Ubuntu Filezilla FTP Client 安装
/************************************************************************************* * Ubuntu File ...