web scraper 爬取微博粉丝性别以及微博内容

本文介绍了如何使用web scraper爬取微博粉丝的性别和微博内容。在爬取粉丝性别时,注意处理翻页和过滤性别信息。对于微博内容,包括了翻页策略和如何抓取展开全文的内容,最后将所有数据整理并导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.粉丝性别

两个地方要注意:

1. 翻页,由于查看粉丝数限制,如果一直点下一页,会卡在第5页或者第10页,最后数据无法保存。所以还是在url里写上页数范围,这样最后数据可以保存:比如第一页网址:是  weibo.com/p/1005056932774899/follow?relate=fans&page=1#Pl_Official_HisRelation__59, 那直接改为page=[1-5],就可以访问前五页了。

2.过滤性别。性别图标不是text也不是image, 我想的办法是提取那一整行html,然后regex f*e*male,这样就能提取male或者female,如下图:

 

二.微博内容:

1.翻页继续选择上述方法

2.展开全文的爬取:

先element scroll 滚到底:

 

然后直接提取展开全文之前的所有微博内容,由于我想分开提取每条微博内容和时间,所以先抓取所有element,选的时候连续选中两个微博框就能分条选中所有微博了:

 

在这个all目录下创建两个selector,一个提取text,一个提取时间。如果年份是当前年份,微博会自动忽略年份,我想要完整时间,所以没有直接提取时间text,而是提取时间那一行html,然后利用正则匹配提取完整时间 [0-9]{4}(\-[0-9]{2}){2}\ [0-9]{2}\:[0-9]{2}……(ps:这个应该有更简单的正则,但是不太熟练不会)。

这样就能提取所有微博了到处为result1.csv。

但是对于需要展开全文的并没有处理。我处理方法是,在一页滚到底之后,再提取所有展开全文链接:

在这个提取链接selector目录下,再新建两条selector,一个提取text,一个提取时间。爬出结果为result2.csv。

将第一份结果筛选删除包含展开全文的行,再把第二份粘贴到第一份,就最终得到所有微博。

 

 

 

 

 

### 使用 Python 爬虫抓取新浪微博指定话题的帖子和评论 为了实现这一目标,通常有两种主要方法:利用新浪提供的 API 和构建自定义网络爬虫。 #### 利用微博开放平台API 使用微博官方提供的接口能够更高效安全地获取所需的数据。开发者可以通过注册成为微博开放平台成员获得访问权限,并遵循其文档指南完成相应功能开发[^3]。 对于具体操作而言,在取得合法授权之后,可以调用微信SDK中的`statuses/search`端口查询含有特定关键字的状态更新(即发帖),以及通过`comments/show`接口读取某条状态下的全部回复记录。 ```python import requests def get_weibo_topic_posts(topic, access_token): url = "https://api.weibo.com/2/statuses/search.json" params = { 'access_token': access_token, 'q': f'#{topic}#', # 带有话题标签的话题名称 'count': 50 # 单次返回的最大数量,默认为15 } response = requests.get(url, params=params).json() posts = [] for status in response['statuses']: post_info = { 'id': status['id'], 'text': status['text'] } posts.append(post_info) return posts def fetch_comments_of_post(post_id, access_token): comment_url = f"https://api.weibo.com/2/comments/show.json?access_token={access_token}&id={post_id}" comments_response = requests.get(comment_url).json() comments_list = [{"user": item["user"]["screen_name"], "content": item["text"]} for item in comments_response['comments']] return comments_list ``` 上述代码片段展示了如何借助微博API检索带有给定主题标签的文章及其下级讨论区内的留言情况。 #### 构建自定义Web Scraper 当无法满足于公开API所提供的服务范围时,则可考虑编写自己的网页解析工具来进行更加深入细致的信息挖掘工作。此过程涉及模拟登录行为、处理反爬机制等问题解决策略[^2]。 下面是一个简单的例子说明怎样定位到包含感兴趣话题页面上的文章链接: ```python from selenium import webdriver from bs4 import BeautifulSoup as soup import time browser = webdriver.Chrome() try: browser.get(f'https://s.weibo.com/weibo?q=%23{your_topic}%23') html_source = browser.page_source page_soup = soup(html_source,"html.parser") weibos = page_soup.find_all('div',{'class':'WB_cardwrap'}) finally: browser.quit() for wb in weibos[:]: try: title_element = wb.select_one('.W_texta').get_text(strip=True) print(title_element) more_link = wb.select_one(".line-clamp").find_next_sibling().select_one("a.S_txt2")['href'] print(more_link) except Exception as e: continue ``` 这段脚本运用Selenium库驱动浏览器加载搜索结果列表视图,再由BeautifulSoup负责提取其中的关键元素信息。需要注意的是实际部署过程中还需加入异常处理逻辑以应对各种意外状况的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值