转载:使用selenium爬取微博内容

标签(空格分隔): Python selenium


前言

近来都在与新浪这个大佬在pk。首先是网页爬取新浪微博,遇到的难题是cookie的存活期太慢,一般爬十分钟就over了一个;后来发明了手机版的模拟登录,顺风顺水了一段时间,结果新浪又来一个验证码,被气得半死。无奈手动输入验证码后,再模拟登录。然而不过两个月,新浪哥又开始抓严,搞得手机版的模拟登陆经常登陆不上去。最后实在无办法了,只好真的去“模拟”浏览器实现爬虫了。说道浏览器自动化操作,目前最好用的就是selenium啦。

关于selenium

Selenium原本是一个用于Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。它支持的浏览器包括IE,Chrome和Firefox等。现在很多虫师为了绕过反爬虫的机制,都选择selenium。由于selenium的原理是唤起浏览器操作,因而代价就是爬虫的非常慢

selenium的安装

我的机子是Ubuntu,所以下面主要是总结我在Ubuntu安装的过程。
1. 输入安装命令行

sudo pip install -U selenium 

2.下载驱动器geckodriver
(百度网盘的下载链接http://pan.baidu.com/s/1sk9Rw3z
3.更新浏览器
如FireFox:

sudo apt-get update –> sudo apt-get install firefox

4.selenium的测试代码

from selenium import webdriver

browser = webdriver.Firefox(executable_path='/PycharmProjects/Weibo/geckodriver')  ## 配置驱动文件所在的路径(路径为geckodriver的存放路径)
browser.get("http://www.weibo.com/login.php")  ## 浏览器Get请求访问
print browser.page_source  ## 输入返回的源代码

PS:在我测试的时候它告诉我配置文件路径错了,那这该如何是好?
这个时候我将我的geckodriver放到另外一个地方:

sudo cp /home/totoro/codes/PycharmProjects/Weibo/geckodriver /usr/local/bin/geckodriver

然后进入存放目录查看情况:

cd /usr/local/bin
ls -l

由于默认权限不是777,所以对其进行更改

sudo chmod 777 geckodriver

最后就可以看到geckodriver呈现绿色了

selenium的测试结果

此处输入图片的描述

模拟登录过程

selenium开启的浏览器,但用户可以当这个浏览器正常使用。所以模拟登录的过程,其实就是程序设置休眠时间,让用户输入账号密码并完成登陆操作后,再实行网页抓取。具体的代码如下:

from selenium import webdriver
import time

browser = webdriver.Firefox(executable_path='/home/gdufs-iiip/PycharmProjects/Weibo/geckodriver')  ## 配置驱动文件所在的路径
browser.get("http://www.weibo.com/login.php")  ## 浏览器Get请求访问
begin_time = time.time()  ##记录开始账号密码的时间

while(True):
    if ((time.time() - begin_time) > 60):  ## 实现登录的时限为60秒
        search_url = 'http://weibo.cn/search/mblog?hideSearchFrame=&keyword=林丹出轨&sort=hot&page=1' ##实行新闻网页抓取
        browser.get(search_url)
        content = browser.page_source
        break

print content
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 模拟爬虫抓取知乎用户信息以及人际拓扑关系,使用scrapy爬虫框架,数据存储使用mongo数据库。   本地运行请注意:爬虫依赖mongo和rabbitmq,因此这两个服务必须正常运行和配置。为了加快下载效率,图片下载是异步任务,因此在启动爬虫进程执行需要启动异步worker,启动方式是进入zhihu_spider/zhihu目录后执行下面命令:   celery -A zhihu.tools.async worker --loglevel=info   爬虫项目部署:   进入zhihu_spider后执行```docker-compose up``` ,进入container后和本地运行方法相同,依次启动mongo、rabbitmq、异步任务、爬虫进程即可。   其它需要说明的问题:   爬虫框架从start\_requests开始执行,此部分会提交知乎主页的访问请求给引擎,并设置回调函数为post_login.   post\_login解析主页获取\_xsrf保存为成员变量中,并提交登陆的POST请求,设置回调函数为after\_login.   after\_login拿到登陆后的cookie,提交一个start\_url的GET请求给爬虫引擎,设置回调函数parse\_people.   parse\_people解析个人主页,一次提交关注人和粉丝列表页面到爬虫引擎,回调函数是parse\_follow, 并把解析好的个人数据提交爬虫引擎写入mongo。   parse\_follow会解析用户列表,同时把动态的人员列表POST请求发送只引擎,回调函数是parse\_post\_follow,把解析好的用户主页链接请求也发送到引擎,人员关系写入mongo。   parse\_post\_follow单纯解析用户列表,提交用户主页请求至引擎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值