如何编写程序的软件 Python 程序爬取新浪军事论坛

用Python编写简单的微博爬虫
作者:语亮
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了如何利用Python编写一个简单的微博爬虫,感兴趣的小伙伴们可以参考一下
先说点题外话,我一开始想使用Sina Weibo API来获取微博内容,但后来发现新浪微博的API限制实在太多,大家感受一下:
只能获取当前授权的用户(就是自己),而且只能返回最新的5条,WTF!
所以果断放弃掉这条路,改为『生爬』,因为PC端的微博是Ajax的动态加载,爬取起来有些困难,我果断知难而退,改为对移动端的微博进行爬取,因为移动端的微博可以通过分页爬取的方式来一次性爬取所有微博内容,这样工作就简化了不少。
最后实现的功能:
1、输入要爬取的微博用户的user_id,获得该用户的所有微博
2、文字内容保存到以%user_id命名文本文件中,所有高清原图保存在weibo_image文件夹中
具体操作:
首先我们要获得自己的cookie,这里只说chrome的获取方法。
1、用chrome打开新浪微博移动端
2、option+command+i调出开发者工具
3、点开Network,将Preserve log选项选中
4、输入账号密码,登录新浪微博
5、找到-&Headers-&Cookie,把cookie复制到代码中的#your cookie处
然后再获取你想爬取的用户的user_id,这个我不用多说啥了吧,点开用户主页,地址栏里面那个号码就是user_id
将python代码保存到weibo_spider.py文件中
定位到当前目录下后,命令行执行python weibo_spider.py user_id
当然如果你忘记在后面加user_id,执行的时候命令行也会提示你输入
最后执行结束
小问题:在我的测试中,有的时候会出现图片下载失败的问题,具体原因还不是很清楚,可能是网速问题,因为我宿舍的网速实在太不稳定了,当然也有可能是别的问题,所以在程序根目录下面,我还生成了一个userid_imageurls的文本文件,里面存储了爬取的所有图片的下载链接,如果出现大片的图片下载失败,可以将该链接群一股脑导进迅雷等下载工具进行下载。
另外,我的系统是OSX EI Capitan10.11.2,Python的版本是2.7,依赖库用sudo pip install XXXX就可以安装,具体配置问题可以自行stackoverflow,这里就不展开讲了。
下面我就给出实现代码
#-*-coding:utf8-*-
import string
import sys
import urllib
import urllib2
from bs4 import BeautifulSoup
import requests
from lxml import etree
reload(sys)
sys.setdefaultencoding('utf-8')
if(len(sys.argv)&=2):
user_id = (int)(sys.argv[1])
user_id = (int)(raw_input(u"请输入user_id: "))
cookie = {"Cookie": "#your cookie"}
url = '/u/%d?filter=1&page=1'%user_id
html = requests.get(url, cookies = cookie).content
selector = etree.HTML(html)
pageNum = (int)(selector.xpath('//input[@name="mp"]')[0].attrib['value'])
result = ""
urllist_set = set()
word_count = 1
image_count = 1
print u'爬虫准备就绪...'
for page in range(1,pageNum+1):
#获取lxml页面
url = '/u/%d?filter=1&page=%d'%(user_id,page)
lxml = requests.get(url, cookies = cookie).content
selector = etree.HTML(lxml)
content = selector.xpath('//span[@class="ctt"]')
for each in content:
text = each.xpath('string(.)')
if word_count&=4:
text = "%d :"%(word_count-3) +text+"\n\n"
text = text+"\n\n"
result = result + text
word_count += 1
soup = BeautifulSoup(lxml, "lxml")
urllist = soup.find_all('a',pile(r'^/mblog/oripic',re.I))
for imgurl in urllist:
urllist_set.add(requests.get(imgurl['href'], cookies = cookie).url)
image_count +=1
fo = open("/Users/Personals/%s"%user_id, "wb")
fo.write(result)
word_path=os.getcwd()+'/%d'%user_id
print u'文字微博爬取完毕'
fo2 = open("/Users/Personals/%s_imageurls"%user_id, "wb")
for eachlink in urllist_set:
link = link + eachlink +"\n"
fo2.write(link)
print u'图片链接爬取完毕'
if not urllist_set:
print u'该页面中不存在图片'
#下载图片,保存在当前目录的pythonimg文件夹下
image_path=os.getcwd()+'/weibo_image'
if os.path.exists(image_path) is False:
os.mkdir(image_path)
for imgurl in urllist_set:
temp= image_path + '/%s.jpg' % x
print u'正在下载第%s张图片' % x
urllib.urlretrieve(urllib2.urlopen(imgurl).geturl(),temp)
print u"该图片下载失败:%s"%imgurl
print u'原创微博爬取完毕,共%d条,保存路径%s'%(word_count-4,word_path)
print u'微博图片爬取完毕,共%d张,保存路径%s'%(image_count-1,image_path)
一个简单的微博爬虫就完成了,希望对大家的学习有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Python爬虫实战(1):爬取Drupal论坛帖子列表 - 华天清 - 博客园
随笔 - 32, 文章 - 0, 评论 - 8, 引用 - 0
1,引言在《》一文我们定义了一个通用的python网络爬虫类,期望通过这个项目节省程序员一半以上的时间。本文将用一个实例讲解怎样使用这个爬虫类。我们将爬集搜客老版论坛,是一个用Drupal做的论坛。2,技术要点我们在多个文章都在说:节省程序员的时间。关键是省去编写提取规则的时间,尤其是调试规则的正确性很花时间。在《》演示了怎样快速生成提取规则,接下来我们再通过GooSeeker的api接口实时获得提取规则,对网页进行抓取。本示例主要有如下两个技术要点:
通过GooSeeker API实时获取用于页面提取的xslt
使用GooSeeker提取器gsExtractor从网页上一次提取多个字段内容。
3,python源代码
源代码下载位置请看文章末尾的GitHub源。4,抓取结果运行上节的代码,即可在控制台打印出提取结果,是一个xml文件,如果加上换行缩进,内容如下图:
5,相关文档1,&6,集搜客GooSeeker开源代码下载源1,&7,文档修改历史1,:V1.02,:V2.03,:V2.1,增加GitHub下载源整理的用Python编写的爬虫文档_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
整理的用Python编写的爬虫文档
上传于|0|0|文档简介
&&Python写互联网网络爬虫
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩108页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢如何写爬虫程序爬取豆瓣网或者新浪微博里的内容? - 知乎822被浏览106391分享邀请回答18634 条评论分享收藏感谢收起)的需要解析js,所以建议抓取手机版(),抓取网页,正则表达式匹配就好了,代码1000行不到2612 条评论分享收藏感谢收起更多1 个回答被折叠()与世界分享知识、经验和见解}

我要回帖

更多关于 eclipse编写java程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信