python3--爬虫--微博爬虫实战


写在前面:微博有三个网站,不同的网站爬取得难度不同,分别是
网页端: http://weibo.com
手机端: http://m.weibo.cn
移动端: http://weibo.cn

本篇主要爬取微博手机端的目标用户的微博内容,所谓目标用户是指,给定的用户id,而不是通过信息搜索得到。

一、目标页面

首先确定好目标用户,这里选择知名演员李现的微博账号。爬取数据不用于非法或者违规的用途,单纯用于学习研究。
打开李现的微博主页,在链接中可以看到他的账号id是2360812967,这个是用来识别每个微博账号的id。
在这里插入图片描述
这是打开网页的源代码,会发现里面没有我们直接看到的如图中的内容,因为页面是通过Ajax动态渲染得到的,所以直接的网页源代码中没有内容。所以需要打开页面的开发者工具页面,找到对应的网页信息。在XHR中可以看到getIndex?这个链接中有对应的微博信息。而且往下滑会出现更多的微博和对应的getIndex?的链接。大概可以确定这个就是要爬取得目标页面。
在这里插入图片描述
接下来得问题,就是找到对应得页面得URL,尤其是向下滑得过程中产生得新的页面。
简单对比和分析可以发现,第二个getindex?开始是关于用户发博得内容。
header中得request URL分别是:

def get_since_id(count_id,header,sin_id):
#构造一个函数得到当前页面的since_id参数
    import requests,time
    from urllib.parse import urlencode
    base_url='https://m.weibo.cn/api/container/getIndex?'
    info={
   'uid':str(count_id),
          'type':'uid',
          'value':str(count_id),
          'containerid':'107603'+str(count_id),
          'since_id':sin_id
         }
    URL=base_url+urlencode(info)#构造当前页面的URL
    print('为了获取下一个since_id的URL:\n',URL)
    r=requests.get(URL,headers=header)
    #print(r.json())
    if r.json()['ok']==0:#如果正常访问出错
        time.sleep(3)#休眠时间
        r=requests.get(URL,headers=header,timeout=6)#应该属于加载错误,重新再加载一次
        if r.json()['ok']==0:
            
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬取微博评论的代码实现可以使用Python编程语言进行开发。可以使用第三方库请求库和BeautifulSoup库来爬取微博评论。 首先,我们需要安装这两个库: ```python pip install requests pip install beautifulsoup4 ``` 接下来,我们创建一个Python脚本,导入所需的库: ```python import requests from bs4 import BeautifulSoup ``` 然后,我们需要编写一个函数来获取微博评论。首先,我们发送一个HTTP GET请求来获取微博页面的HTML内容: ```python def get_comments(): url = '微博评论的URL地址' response = requests.get(url) html = response.text ``` 接下来,我们使用BeautifulSoup库解析HTML内容,并查找评论的相关标签: ```python soup = BeautifulSoup(html, 'html.parser') comments = soup.find_all('div', {'class': 'comment-content'}) ``` 最后,我们可以遍历评论列表,并提取评论的文本内容: ```python for comment in comments: content = comment.text print(content) ``` 完整的代码如下: ```python import requests from bs4 import BeautifulSoup def get_comments(): url = '微博评论的URL地址' response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') comments = soup.find_all('div', {'class': 'comment-content'}) for comment in comments: content = comment.text print(content) get_comments() ``` 需要注意的是,上述代码中的"微博评论的URL地址"需要替换为实际微博评论的页面URL地址。此外,还需要处理可能的网络请求错误和页面解析错误,以确保代码的稳定性和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值