Python-selenium-爬取微博热搜信息

Python-selenium-爬取微博热搜信息

最近闲来无事,开始学习Python-selenium爬虫(第一天),记录下爬取微博热搜信息的过程,我用的是Google Driver操作谷歌浏览器进行数据获取。

selenium是一个支持各大浏览器的自动化测试工具,包括 Chrome,Safari,Firefox
,ie等。再构造爬虫时,如果我们加入了User-Agent,那么变伪装成了浏览器,可以骗过一些技术水平不太高的网站。但如果使用selenium,则就不是伪装浏览器,而是真正的用浏览器去访问。有时我们可能会遇到这种情况,前端页面展示出来的东西,并不在后端源代码中,自然无法通过使用requests请求获得源码进行爬取。这时候就可以使用selenium进行爬取数据,因为他就是用真实的浏览器去访问页面的,所以出现的内容和我们在前端看到的是一模一样的。

  • 爬虫地址

https://s.weibo.com/top/summary

  • 成果预览
  • 实现代码:
# -*- coding: utf-8 -*-

"""
@File    : 微博热搜榜.py
@Author  : fungis@163.com
@Time    : 2020/03/06 22:11
@notice  : 爬取微博热搜榜列表&热度&链接
"""
from selenium import webdriver
import time
from lxml import etree
import pandas as pd

driver = webdriver.Chrome()
driver.get('https://s.weibo.com/top/summary')

print('当前页面标题:'+driver.title)
print('当前页面地址:'+driver.current_url)
print('----------------分割线----------------')

html = driver.page_source
html = etree.HTML(html)

dataList = html.xpath('//td[@class="td-02"]/a/text()')
#获取对应的内容
# for dt in dataList:
#     print(dt)  # 打印对应的文本
#获取对应的链接
linklist = html.xpath('//td[@class="td-02"]/a/@href')
hotList = html.xpath('//td[@class="td-02"]/span/text()')

time.sleep(1)#操作暂停一秒
driver.close()#关闭浏览器

#持久化文件到本地
dts = []
for i in range(len(dataList)):
    lst = []
    lst.append(dataList[i])
    if(i == 0):
        lst.append('置顶热搜')
    else:
        lst.append(hotList[i-1])
    lst.append('https://s.weibo.com'+linklist[i])
    dts.append(lst)
df = pd.DataFrame(dts)
df.to_excel('weibo-hotkeyData.xlsx', encoding='gbk')#写入excel中
print('爬取完成')
  • 过程分析
    利用Xpath拿到各个节点取出对应节点的文本信息即可,然后利用pandas库保存列表到Excel中去。强烈推荐Xpath Helper这个插件,能帮助我们快速验证是否拿到相关节点的信息。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值