网站调用新浪微博内容(新浪哥又开始抓严了,只好真的去“模拟”浏览器了 )

优采云 发布时间: 2022-01-17 11:00

  网站调用新浪微博内容(新浪哥又开始抓严了,只好真的去“模拟”浏览器了

)

  前言

  最近在和新浪大佬PK。首先是从网络上抓取新浪微博。遇到的问题是cookies的生命周期太慢了。通常,爬行 10 分钟后会覆盖一个。后来又发明了模拟登录的手机版。过了一段时间的一帆风顺,新浪又来了验证码,气得半死。无奈手动输入验证码,然后模拟登录。然而不到两个月,新浪又开始严格了,以至于手机版的模拟登录经常无法登录。最后实在没有办法,只好真的“模拟”浏览器来实现爬虫。说到浏览器自动化,selenium 是目前最好用的一种。

  关于硒

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

  安装硒

  我的机器是Ubuntu,所以下面主要总结一下我在Ubuntu的安装过程。

  1. 进入安装命令行 sudo pip install -U selenium

  2.下载驱动geckodriver(百度网盘下载链接)

  3.更新浏览器,(如FireFox:sudo apt-get update –> sudo apt-get install firefox)

  硒测试代码

  from selenium import webdriver

browser = webdriver.Firefox(executable_path='/home/gdufs-iiip/PycharmProjects/Weibo/geckodriver') ## 配置驱动文件所在的路径

browser.get("http://www.weibo.com/login.php") ## 浏览器Get请求访问

print browser.page_source ## 输入返回的源代码

  硒化验结果

  

  模拟登录过程

  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() ##记录开始账号密码的时间

content = '' ## 记录网页源代码

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线