通过微博简易上手Python爬虫

一、所需要用到的Python库

  1. re
    re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分。
  2. requests
    Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作。
  3. beautifulsoup
    Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

其中BeautifulSoap的安装为pip install beautifulsoup4 当然也可以根据需要,继续安装lxml 和 html5lib,具体可以参考其他文档。

二、爬取网页相关内容,以微博为例

  1. 明确自己想要爬取的网页(以下图为例)。
    网址:https://weibo.com/2656274875/JcnqqgXnC?refer_flag=1001030103_&page=2&type=comment
    通过微博简易上手Python爬虫_第1张图片
    右键查看微博源代码
    在这里插入图片描述
    查看我们要的内容在哪里,有的需要正文,有的需要评论等。

补充:
微博其实有多种查看方式,在各种教程中也有讲解,一般我们看到的是网页版,也就是上图所示的形式,其网页大多为weibo.com。但是改用weibo.cn版难度将降低,因为代码更简洁

  1. 代码。
    这里放的是爬微博评论的代码。我们需要明确我们爬的内容在哪一部分。
    通过微博简易上手Python爬虫_第2张图片
    在这里插入图片描述
    我们发现评论全部在class为ctt的span里,故利用soup.find_all(‘span’, class_=‘ctt’)找到所有评论。找到内容是包括这些<>代码的,所以还需要利用正则匹配去找到文字。
import re
import requests
from bs4 import BeautifulSoup

cookie = {"Cookie":"Your Cookie!!!!"}
def GetText_WB_COM(URL,filePath):
    fp = open(filePath, 'w', encoding='utf8')
    # 抓取web页面
    fp.write(URL)
    fp.write("\n\n")
    res = requests.get(URL,cookies=cookie)
    status_code=res.status_code
    if status_code/100 != 2:
        return status_code
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.content,"lxml")
    #print(soup)
    links = soup.find_all('span', class_='ctt')
    # link的内容就是span
    for link in links:
        print(GetContent(link))
        #print(link)

def GetContent(text):
    if '回复' in str(text):
        result = re.findall(":(.*?)<", str(text))
    else:
        result = re.findall("(.*?)<",str(text))
    value = result[0]
    if len(value)>1:
        return value


print(GetText_WB_COM('https://weibo.cn/2656274875/JcnqqgXnC?refer_flag=1001030103_&page=2','GetText3.txt'))
  1. 最终效果
    通过微博简易上手Python爬虫_第3张图片
  2. 补充说明
    ①关于cookie的获取,登录微博后,进入浏览器开发者工具。
    通过微博简易上手Python爬虫_第4张图片
    找到network,刷新页面(如下图即可找到cookie)。
    通过微博简易上手Python爬虫_第5张图片
    ②相关代码说明
    这里关于正则匹配和beautifulsoap的讲解不多,是因为已经有很多文档来讲这个了,而且也比博主了解的更透彻,所以这里就不再赘述。这方面有疑问,可以自行去查阅网络上的其他文档。
    ③内容说明
    这里是以微博评论为例,其他的也是可以依葫芦画瓢,找到自己要爬取的内容所属的结构。

你可能感兴趣的:(python,爬虫,微博)