2024-07-07-python-weibo-scrapy

|

如何打造一个个人微博爬虫

|

python

|

post

|

python

|

2019-07-07 18:00:24

|

本文介绍使用scrapy爬虫框架打造一个自己的微博客户端。主要包括以下内容:

  • 1.介绍如何分析构造微博爬虫;

  • 2.使用scrapy进行网页内容提取。

1.分析如何构造爬虫流程

对于大不多数爬虫,首先考虑的应该是从手机端入手,因为手机端的网页相对PC端来说内容更为简洁,并且爬起来容易许多。所以本文爬取的就是微博的手机端网站:https://weibo.cn/。 为了构造所需的爬虫,首先需要分析目标网站的网站结构。以微博为例,打开微博手机端网站输入密码登陆之后进入的就是首页。首页上的内容就是关注的人发布的微博。比如下图:

Smiley face

红色的数字1、2就是指一条条关注的人发布的微博。

到这里,一个简单的爬取思路就出来了:首先是打开网址;然后是登陆首页;最后就是按照页码顺序把一条条微博提取出来。 用流程图表述为: Smiley face

2. 使用scrapy进行网页内容提取

本文对微博手机端的分析使用的是Chrome浏览器自带的工具。在浏览器按下F12即可打开。如下图所示:

Smiley face

由上图可以得出以下结论:

打开任意一条微博ID的页面:

Smiley face

按照上图的箭头点击顺序,可以看到微博内容的标签为<div class=’c’ id=’M_’>,因而根据标签就可以提取到微博的内容了。

上述几个步骤用代码表述为:

def parse(self, response):#解析页码

page_num=0

if response.xpath(“//input[@name=‘mp’]”) == []:#这里处理微博为空的情况

page_num = 1

else:

page_num = (int)(response.xpath(“//input[@name=‘mp’]”)[0].attrib[‘value’])

https://weibo.cn/?page=2

for i in range(1,page_num+1):#page 1-40

yield response.follow(f’https://weibo.cn/?page={i}', callback=self.parse_id)

def parse_id(self,response):#提取对应页码的微博ID

ids=response.xpath(‘//div[contains(@id,“M_HC”)]/@id’).getall()

for id in ids:#parse weibos

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值