总体目标:抓取微博内容信息;给一个入口,抓分布抓取关注list,然后给到具体链接去爬取具体个人的微博信息
#我这现在有两种方式,selenium模拟登陆和下拉,二是分析接口获取具体微博信息,这边暂时没有完全放开安装list关注再分别一次抓取每个关注的微博,后面会更新

一,requests抓取
1.分析
具体微博个人页面,首先你需要切换到全部微博,然后下拉分析,后面内容是通过ajax加载,在data里面数据格式是html代码;然后需要注意的是微博反爬访问太多会封账号返回404错误,这里面建议要准备不同的cookie后续


还有一个问题是,正常微博页面是分3段加载,首先出现一部分,后面两部分需要下拉两次ajax加载处理,这里可以F12查勘单,有个小技巧就是这个可以通过改变请求链接参数把第一段也通过json数据库请求回来,只需要去掉后面pre_page那开始包括他删除就得到第一段内容;另外不同页面变化也是通过更改链接参数获取,改变页面是通过改变page和pre_page的数,改变同一页的不同json段是pagebar的值1或2

还有技巧就是能通过第一页的最后一段json数据,能查到总共微博页数,这就方便后面遍历全部抓取

#效果及代码

import time
import re
from lxml import etree
import requests
import jsondef request1(url):headers={# "Cookie":"SINAGLOBAL=7238757845138.87.1528291392417; UOR=,,spr_web_360_hao360_weibo_t001; login_sid_t=bd5a4abe734c091249cdce71379c0348; cross_origin_proto=SSL; Ugrow-G0=e66b2e50a7e7f417f6cc12eec600f517; TC-V5-G0=866fef700b11606a930f0b3297300d95; _s_tentry=-; Apache=685802145012.8082.1542780237180; ULV=1542780237187:19:3:1:685802145012.8082.1542780237180:1541462062210; TC-Page-G0=cdcf495cbaea129529aa606e7629fea7; WBtopGlobal_register_version=18608f873d5d88f2; SSOLoginState=1542781061; wvr=6; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W50QEC8VdzuOHjXwxjEGser5JpX5K2hUgL.Fo-feo.ceKe4S0M2dJLoIpjLxKqLBoqL1-qLxKqLB.eLB-2LxKqL1KMLB.2t; ALF=1574324177; SCF=ApgoQqG5luyu67rkHic6LidzChLHTIe5EQZgRnsuPrfkK57iJqk723zd_GSb5ZMq2jbGlYvGXkZ6LbJj5PpY6zI.; SUB=_2A2528WQBDeRhGeNL6VsX8S3FzDuIHXVVh9LJrDV8PUNbmtAKLVnXkW9NSQ30mXwLfrcwH1SRYaTHBUXB4ipbEQrL; SUHB=02MvCTyTmQYvsK; un=18514476337; YF-V5-G0=a5a6106293f9aeef5e34a2e71f04fae4; wb_view_log_5529613977=1920*10801","Accept": "*/*","Accept-Encoding": "gzip, deflate, br","Accept-Languag": "zh-CN,zh;q=0.9","Connection": "keep-alive","Content-Type": "application/x-www-form-urlencoded","Cookie": "SINAGLOBAL=7238757845138.87.1528291392417; un=18514476337; UOR=,,login.sina.com.cn; SCF=ApgoQqG5luyu67rkHic6LidzChLHTIe5EQZgRnsuPrfkww0JTtREftUveuuJafUL3dSgYNHTvqTAmG9myhm1k58.; SUHB=09P9Vm5BSmNlLF; _s_tentry=login.sina.com.cn; Apache=3613626040096.6445.1542931074283; ULV=1542931074334:22:6:4:3613626040096.6445.1542931074283:1542888731560; SUBP=0033WrSXqPxfM72wWs9jqgMF55529P9D9W50QEC8VdzuOHjXwxjEGser5JpVF02RSK2XShMce0eN; SUB=_2AkMsq84tdcPxrAZUmvETzWjra4pH-jyffqfbAn7uJhMyAxh77mgtqSVutBF-XJVxcy_VTV1-kjKoQyDwqoPCwTmq; login_sid_t=174e473124cb2d9808b4e8cd5a9739e1; cross_origin_proto=SSL","Host": "weibo.com","Referer": "https://weibo.com/dajiakuishow","User-Agent": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6","X-Requested-With": "XMLHttpRequest",}html=requests.get(url,headers=headers)# html.encoding="utf-8"# print(html.text)json1=json.loads(html.text)['data']# print(json1)return etree.HTML(json1)# return json.loads(html.text)['data']#起始微博
a=request1("https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&profile_ftype=1&is_all=1&pagebar=1&pl_name=Pl_Official_MyProfileFeed__22&id=1003061246130430&script_uri=/weidaxun&feed_type=0&page=1&pre_page=1&domain_op=100306&__rnd=1542871737489")
# aa=etree.HTML(a)
new_html=a.xpath("//div[@class='W_pages']//li/a")
print(new_html)
print(len(new_html))
for i in range(len(new_html)):print("第页%s内容:"%(i+1))html1=request1("https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page={}&pl_name=Pl_Official_MyProfileFeed__22&id=1003061246130430&script_uri=/weidaxun".format(i+1))print(html1.xpath('//div[@class="WB_text W_f14"]/text()'))html2=request1('https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&profile_ftype=1&is_all=1&pagebar=0&pl_name=Pl_Official_MyProfileFeed__22&id=1003061246130430&script_uri=/weidaxun&feed_type=0&page={}&pre_page={}'.format(i+1,i+1))print(html2.xpath('//div[@class="WB_text W_f14"]/text()'))html3=request1('https://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=100306&profile_ftype=1&is_all=1&pagebar=1&pl_name=Pl_Official_MyProfileFeed__22&id=1003061246130430&script_uri=/weidaxun&feed_type=0&page={}&pre_page={}'.format(i+1,i+1))print(html3.xpath('//div[@class="WB_text W_f14"]/text()'))

二、selenium模拟登陆及下拉
需要注意的主要就是下拉到底判断条件的实现方法,这样也可以完整获取微博内容,就是效率很低

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time
import re
from lxml import etree
import requests
import json
driver=webdriver.Chrome()
driver.set_window_size(1920,800)
driver.get("http://www.weibo.com")
time.sleep(5)elem_usr=driver.find_element_by_xpath('//*[@id="loginname"]')
print(elem_usr)
elem_usr.send_keys("18514476337")
elem_pwd=driver.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input')
elem_pwd.send_keys("******")
elem_sub=driver.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a/span')
elem_sub.click()
time.sleep(3)def wb_list(url):driver.get(url)time.sleep(1)# driver.execute_script('window.scrollBy(0,1000)')t=Truewhile t:driver.execute_script('window.scrollBy(0,3000)')try:time.sleep(2)# driver.find_element(by=By.LINK_TEXT,value='下一页').textdriver.find_element_by_link_text('下一页')# driver.scrollTo(0, document.body.scrollHeight)# print(driver.page_source)time.sleep(3)t=Falseexcept:passreturn driver.page_source# c=driver.page_source# cc=re.findall('',c,re.S)# driver.find_element_by_link_text('下一页').click()aa=wb_list("https://weibo.com/weidaxun?profile_ftype=1&is_all=1#_0")
print(aa)

微博社交内容信息爬取(selenium和equests请求接口两种方法)相关推荐

  1. 微博粉丝个人信息爬取

    首先分析微博网页端的两个页面,发现weibo.com只能获取博主前五页的粉丝列表,weibo.cn能获取前20也粉丝列表.于是分析手机端,本人用手机试着划了下博主粉丝页,发现也只能获取两千左右的粉丝数 ...

  2. Python爬虫实战(四):微博博主信息爬取(粉丝数、关注数、博文数、信用等级、认证信息、个人简介……)

    追风赶月莫停留,平芜尽处是春山. 文章目录 追风赶月莫停留,平芜尽处是春山. 好久没更新了,今天来更新一波. 一.网页分析 二.接口分析 url分析 返回数据分析 三.编写代码 获取数据 保存数据 完 ...

  3. 使用 MSU StegoVideo 将信息隐藏进 AVI 视频文件中(两种方法 + 详细图文过程)

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=1305 环境部署 操作系统: Windows 7 专业版 64位 软件: 下载 MSU StegoVideo 下载地 ...

  4. excel单元格内容拆分_Excel中把一个单元格内容拆分到多个单元格内的两种方法...

    ​利用时间是一个极其高级的规律.--恩格斯 今天给大家分享的是关于数据拆分的小技巧,什么意思呢? 就比如下面的表格,我想把图一的表转换为图二的表,这个要如何做呢? 今天给大家分享2种方法实现它. 方法 ...

  5. 中国大学MOOC课程信息爬取与数据存储

    版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82016583 10月18日更:MOOC课程信息D3.js ...

  6. python爬取微博用户正文_基于Python的新浪微博用户信息爬取与分析

    基于 Python 的新浪微博用户信息爬取与分析 邓文萍 [摘 要] 摘要:本文设计并实现了一个微博用户信息爬取与分析系统 , 利用 Cookie 实现了用户的模拟登录 , 使用 Python 语言的 ...

  7. 【自嗨笔记#1】微博疫情舆情分析---信息爬取部分

    [ 自嗨笔记#1] 微博疫情舆情分析-爬取部分 作为一个疫情时入坑的"小学生",刚刚注册了csdn,这里想和大家交流下学习心得(自己解决代码错误的太难了!),一方面:想看看大家有没 ...

  8. python微博涨粉_爬取微博用户公开信息,分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!...

    前段时间为"周杰伦打榜"话题迅速登上微博热搜榜 因为cxk的粉丝们质疑周杰伦微博没有数据 (周杰伦没有开通微博) 于是,无数隐匿江湖多年 看不下去的周杰伦老年粉开始被迫营业 于是一 ...

  9. Python+Selenium动态网页的信息爬取

    录 一.Selenium 1.1 简介 1.2 配置 二.对百度进行自动化测试 2.1 进入百度搜索界面 2.2 自动填充百度网页的查询关键字并完成自动搜索 三.爬取指定网页的名言 3.1 找到元素 ...

最新文章

  1. 新警达尼亚尔·迪力木拉提的春运一天
  2. MarkdownPad2基础语法
  3. Android中的AsyncTask异步加载图片
  4. Java8 EnumMap 源码分析
  5. virt-manager 使用 shh 远程访问配置方法
  6. Java 类型和数据库类型怎么实现相互映射?
  7. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  8. 如何在虚拟linux环境运行python_Conda(Python)虚拟环境不能从Windows移植到Linux
  9. 离婚从来不是解决家庭危机的唯一办法
  10. css居中的几种方法_CSS布局中的水平居中的方法
  11. keras load model 并保存特定层 (pop) 的权重save new_model
  12. 2021-07-22-第一次实训(HTML+CSS+JS)
  13. vmware station密钥
  14. 初次尝试使用VisualSFM记录
  15. 物联网-家庭监控系统
  16. matlab如何编newton-raphson,Matlab中的Newton-Raphson方法
  17. 视频教程-2019年人工智能热门案例精讲之歌词生成器-机器学习
  18. 联想ghost重装系统_联想电脑不能安装GHOST系统
  19. vm虚拟机安装教程win7
  20. 【Shell】shell脚本中的空格

热门文章

  1. 渲染时间过长?这些参数设置学起来
  2. 高德纳报告称:在2022年,每五个智能手机中就有四个具有人工智能
  3. Linux运维容器篇 k8s单节点二进制部署(1) ECTD部署+CA证书制作
  4. oracle提示无法识别,(急)导出文件中出现无法识别的语句
  5. 2021备战金三银四血拼一波算法:字节+百度,java编程教程视频
  6. Tomcat成功安装后,无法打开欢迎页面
  7. Spring5学习笔记3
  8. 【JVM笔记】浅堆(Shollow Heap)与深堆(Retained Heap)
  9. Android studio通过连接蓝叠模拟器大幅提高速度!
  10. 评论框图片表情输入工具分享