当前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爬虫遍历贴吧用户的更多相关文章

  1. python爬虫(3)——用户和IP代理池、抓包分析、异步请求数据、腾讯视频评论爬虫

    用户代理池 用户代理池就是将不同的用户代理组建成为一个池子,随后随机调用. 作用:每次访问代表使用的浏览器不一样 import urllib.request import re import rand ...

  2. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

  3. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  4. python爬虫之User-Agent用户信息

    python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...

  5. Python爬虫笔记【一】模拟用户访问之设置请求头 (1)

    学习的课本为<python网络数据采集>,大部分代码来此此书. 网络爬虫爬取数据首先就是要有爬取的权限,没有爬取的权限再好的代码也不能运行.所以首先要伪装自己的爬虫,让爬虫不像爬虫而是像人 ...

  6. 适合新手练习的Python项目有哪些?Python爬虫用什么框架比较好?

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. Python爬虫一般用什么框架比较好?一般来讲,只有在遇到比较大型的需求时 ...

  7. python爬虫基础要学什么,有哪些适合新手的书籍与教程?

    一,爬虫基础: 首先我们应该了解爬虫是个什么东西,而不是直接去学习带有代码的内容,新手小白应该花一个小时去了解爬虫是什么,再去学习带有代码的知识,这样所带来的收获是一定比你直接去学习代码内容要多很多很 ...

  8. python 爬虫新手入门教程

    python 爬虫新手教程 一.什么是爬虫 爬虫就是把一个网站里的内容读取下来 这里我们就要学习一个知识 我们看到的网页是有一种叫HTML的语言编写的 他可以给文字显示不同的样式 如:<p> ...

  9. Python爬虫beautifulsoup4常用的解析方法总结(新手必看)

    今天小编就为大家分享一篇关于Python爬虫beautifulsoup4常用的解析方法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧摘要 如何用beau ...

随机推荐

  1. position窗口居中

    position的四个属性值: relative absolute fixed static 下面分别讲述这四个属性. <div id="parent">     &l ...

  2. Silverlight behavior(行为) trigger 大全

    behavior是超级有用的东西,一定要学会,因为这个就是面向对象编程中的封装.超级重要! 欢迎大家如果有好的效果,可以给我留言,我打算不断的整理这个behavior,希望不久用behavior可以做 ...

  3. OJ-Triangle

    这是Leet Code OJ上面的一道题,关于求从上到下的最小路径. 这是原题链接:https://leetcode.com/problems/triangle/ Given a triangle, ...

  4. 领域设计之模型充血、Repository对象注入

    工作中接触了不少项目组,他们在实际的项目开发中,Domain Object的贫血模型设计,还是主要的应用的范式.原因在于,贫血模型模型设计中,把所有涉及持久化的业务逻辑,封装到了Domain Serv ...

  5. NYOJY 491 幸运三角形

    描述 话说有这么一个图形,只有两种符号组成(‘+’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同 ...

  6. 黑马-----内存模型和volatile详解

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 JAVA线程-内存模型和volatile详解 一.单核内存模型 1.程序运行时,将临时数据存放到Cache中 2.将CPU计算所 ...

  7. Weibo SDK WP版本回调参数没有uid的解决方法

    服务端跟新浪微博交互的时候需要用到UID参数, 但WP的WeiboSDK默认没有提供, 只要增加一个类成员就好了, 序列化json的时候程序会自动处理 下载SDK源代码http://weibowp7s ...

  8. iOS UIPickerView 显示全国省市

    效果图 #import "ViewController.h" @interface ViewController () @property(strong,nonatomic)UIP ...

  9. Entity Framework search sequnce

    sql express, then (LocalDb)\v11.0 (LocalDb)\mssqllocaldb sqllocaldb i  could list all the local db i ...

  10. How to do code coverage test for windows service

    First, instrument the exe or dll by command vsinstr -coverage the dll/exe second, start the performa ...