python爬取新浪博客_python网络爬虫 新浪博客篇

上次写了一个爬世纪佳缘的爬虫之后,今天再接再厉又写了一个新浪博客的爬虫。写完之后,我想了一会儿,要不要在博客园里面写个帖子记录一下,因为我觉得这份代码的含金量确实太低,有点炒冷饭的嫌疑,就是把上次的代码精简了一下,用在另外一个网站而已,而且爬别人的博客总有一种做贼心虚的感觉,怕被各位园友认为是偷窥狂魔。但是这份代码总归是我花了精力去写的,我也不想就此让它深藏在硬盘之中(电脑实在太老了,可能过两年硬盘坏了,这份代码就消失了),还是贴出来权当作抛砖引玉。

说起要爬新浪博客,总归是有一个原因吧。我的原因呢也是什么的简单,就是这两天在网上下载了一本python自然语言处理的一本书,就像尝试着应用一下里面的理论(其实我都还没看呢 哈哈),当然照着书里面的例子玩总归是没什么成就感的,所以就想自己找点东西实验一下。可能你觉得这个原因和爬新浪博客没什么必然联系啊,确实如此,前面扯的东西太虚了,我写这个东西就是为了满足一下自己的偷窥欲望,把曾经女神的博客都下载下来(大家不要喷。。),顺便在用前面讲的高大上的自然语言理论处理一下(估计很难,八成做不下去)。

讲了这么多废话了,现在开始说一说爬虫的工作原理。先原谅我粗糙的涂抹技术,因为实在不想把再出现上次帖子中的情况,大家纷纷在评论中讨论我在知乎看什么。首先在新浪播客找到你要下载用户的主页,在地址栏中最后一般有一个数字对应于用户的id,因为每页放的文章有限,新浪博客采用了分页,对应于url里面的page=2,就是第二页的意思。在当前的页面我们可以用正则表达式解析出文章的发表时间,“查看原文”的链接中找到文章的链接。

因为新浪博客比较开放的原因,不登陆也能查看文章那个的内容,所以就直接用python里的urllib2,也不需要设置cookies,省去了很多麻烦。唯一比较麻烦的是如果文章里面有图片是多媒体的链接,提取里面的文字比较麻烦和繁琐,因为这个界面比较简单,当然也可以直接解析html,不过我已经习惯了正则表达式,虽然很麻烦,但还是硬着头皮写完了。其中正则表达式的替换字符串的功能非常的好用,就重点讲一讲这个吧!

在遇到复杂的字符串替换的时候,正则表达式的sub函数用起来非常的easy。贴一段简单的代码:

#-*- encoding:UTF-8 -*-

import re

s = u'''

this is string1
这是字符串二
'''

def div_func(m):

if m is None:

return ''

return m.group(1)

if __name__ == '__main__':

pattern = re.compile(u'

(.*?)
', re.U | re.S | re.I)

print s

sss = pattern.sub(div_func, s)

print

print sss

在网页中,会碰到很多不同的格式,如代码里面的字符串s,如果想把里面的文字提取出来,对于比较复杂的替换要求,我们可以定义一个函数作为参数传给sub进行处理,运行的结果如下图所示,是不是非常的方便?

再讲讲python的中文编码问题吧,最简单的处理就是尽可能少的用str,尽可能多的用unicode。对于来自文件的输入数据,最好先解码为unicode再做处理,这样可以减少90%的乱码问题。哦,对了,今天还发现了一个非常好用的一个函数,可以用来下载文件

import urllib

urllib.urlretrieve(url, path)

此函数可以将url中的文件下载到本地路径path中,是不是非常的简单。最后展示一下。当然数据不多啦,女神也就一百多篇的文章,用数据库有点杀鸡用牛刀的感觉,直接输出到一个文本文件里面也是挺方便的哈!

最后的最后,还是把源代码贴出来以供大家参考哈!(由于本人实在不擅长描述细节,所以写的很粗,望大家多多见谅啊!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道你想了解如何用 Python 爬取新浪微博评论。以下是一些步骤供您参考: 1. 安装必要的库 在使用 Python 爬取微博评论前,您需要安装一些必要的库。其中,requests 和 BeautifulSoup 库是必不可少的。 您可以使用以下命令在终端中安装它们: ``` pip install requests pip install beautifulsoup4 ``` 2. 登录微博并获取 cookie 在爬取微博评论之前,您需要登录您的微博账号并获取 cookie。 您可以使用 Chrome 浏览器登录您的微博账号。然后,按 F12 打开开发者工具,切换到“Network”选项卡并刷新页面。在“Filter”栏中输入“comment”,然后点击“XHR”选项卡。 接下来,您可以在“Headers”选项卡中找到“Request Headers”部分,复制“Cookie”字段的值。 3. 构造请求 URL 在获取 cookie 后,您需要构造请求 URL。以下是一个示例 URL:https://weibo.cn/comment/Jf3bhk1V5?uid=123456&page=1 其中,Jf3bhk1V5 是微博的 ID,123456 是用户的 ID,page 是评论的页数。 您可以使用 requests 库发送 GET 请求并传递 cookie、微博 ID 和页数参数。 以下是一个示例代码: ``` import requests from bs4 import BeautifulSoup cookie = 'your_cookie_here' url = 'https://weibo.cn/comment/Jf3bhk1V5?uid=123456&page=1' headers = { 'Cookie': cookie } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') # 解析评论 ``` 4. 解析评论 最后,您需要解析页面上的评论。您可以使用 BeautifulSoup 库来解析 HTML。 以下是一个示例代码: ``` comments = soup.find_all('div', class_='c') for comment in comments: # 获取评论内容 content = comment.find('span', class_='ctt').text # 获取评论时间 time = comment.find('span', class_='ct').text # 获取评论用户 user = comment.find('a', class_='nk').text # 输出评论信息 print(f'{user}({time}): {content}\n') ``` 以上就是用 Python 爬取新浪微博评论的一些步骤。请注意,爬取微博评论可能会违反微博的使用协议,因此请谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值