首页 > 编程语言 >利用python爬取百思不得姐demo实例

利用python爬取百思不得姐demo实例

时间:2022-12-28 17:38:01浏览次数:60  
标签:__ 百思 python demo self 爬取 url base data


作为一个刚接触爬虫的小白,在学习了一定的语法后,第一个目标就是找一个适合初学者的网站来小试牛刀。一般来讲都会选择一个难度系数比较低的网站来进行爬取,这样不仅有助于我们快速掌握语法,同样也能够让我们收获爬取成功的小欢喜。

在此之前,我们可以选择内涵段子来进行练手,无论是教学演示还是小白练手都是一个不错的选择。但是后来内涵段子他死了,不是被人写爬虫爬死的,而是自己作死的,这就让我们损失了一个磨刀霍霍向猪羊的机会。那我们该怎么办呢,我们可以选择一些企业网站或是一个咨询类的网站进行练手。不过这些都是个人建议,仅供参考。

今天给大家演示的是爬取"百思不得姐"的爬虫代码。让我们在练手的同时,也能够轻松一刻。首先让我分析下网站内容。

打开网址:http://www.budejie.com/,这个是网站的首页内容,然后点击第二页,第三页,你可以发现爬取链接的规律。即第二页为:/2,第三页为:/3。如下图:


利用python爬取百思不得姐demo实例_re模块


接下来让我们审查元素,按F12进行元素审查,查找标签的规律,以方便我们接下来编写正则表达式来提取内容:

利用python爬取百思不得姐demo实例_正则表达式_02


查找到标签的规律后,接下来就让我们着手代码的编写工作。新建一个BuDeie.py文件。具体代码如下:

import requests
import re
import time
import io
import sys




class BudeJie(object):


def __init__(self, base_url, *args, **kwargs):
self.base_url = base_url
#设置请求头
self.headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
#re模块的正则
self.first_pattern = re.compile(r'<div class="j-r-list-c-desc">.*?</div>', re.S)
self.second_pattern = re.compile(r"<.*?>|&(.*?);|\s| ")


#发送请求
def send_request(self,url):
#停止一秒
time.sleep(1)
#发送请求
response = requests.get(url, headers=self.headers)
#转为utf-8格式
return response.content.decode('utf-8')


#写入数据
def write_file(self,data,page):
#with open(**) as f 常见的读写操作:
with open("budejie.txt","a",encoding='UTF-8') as f:
filename = "第" + str(page) + "页的段子\n"
print(filename)
f.write(filename)


for content in data:
#替换提取到的 a 标签
second_data = self.second_pattern.sub("",content)
#写入数据
f.write(second_data)
f.write("\n\n")


#解析数据
def analy_file(self, data):
#结合上文的 re.compile 使用
data_list = self.first_pattern.findall(data)
return data_list


#调度方法
def start_work(self):
for page in range(1,5):
#拼接url
url = self.base_url + str(page)
#发送请求
data = self.send_request(url)
second_data = self.analy_file(data)
self.write_file(second_data,page)


if __name__ == "__main__":
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
#实例化对象
B = BudeJie("http://www.budejie.com/")
B.start_work()


# import 为了调用定义在其他文件中的变量
# requests模块 第三方网络请求库
# re模块 正则表达式
# time模块 时间获取和转换
# io模块 读写文件
# sys 系统特定的参数和功能
# class BudeJie(object): 定义一个类库
# def __init__(self, base_url, *args, **kwargs):
# 定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法
# self 第一个参数永远是 self ,并且调用时不用传递该参数
# base_url 爬取的网址
# *args 来发一个非键值对的可变数量的参数列表给一个函数
# **kwargs 将一个不定长度的键值对,作为参数传递给一个函数

运行上述代码如图:

利用python爬取百思不得姐demo实例_正则表达式_03

即可运行成功。当然有的人可能会遇到如下这种情况:

利用python爬取百思不得姐demo实例_键值对_04

 是因为python中还没有安装requests库,我们通过cmd打开黑窗口:执行下面这行代码:

pip install requests

利用python爬取百思不得姐demo实例_re模块_05

当看到这个即表示安装成功,再次点击运行程序,可完美解决刚才存在的问题。

以上就是今天给大家分享的百思不得姐的爬取,只是爬取里面的文本,有兴趣的小伙伴可以扩展下思维,自行爬取下其他内容,谢谢大家。获取演示代码,请在公众号回复 ‘百思不得姐’ 。




标签:__,百思,python,demo,self,爬取,url,base,data
From: https://blog.51cto.com/u_15924937/5975824

相关文章

  • 【Python 库】bs4的使用
    和lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。BeautifulSoup,是一个第三方的库,所以使用之前需要安装,安装方法,输入cmd,调出......
  • python运行环境以及编辑器介绍
    Hello呀,EveryOne,在上次更新了第一篇的公众号推文后,小编也如约的和大家玩起了消失,但是工作还是要进行的,这不又乖乖的回来码字了,废话不再多说,今个带大家来敲下python编写的第......
  • Python爬取意林杂志所有期刊文章
    可能很多人对这个意林杂志比较陌生,但是对于小编来说,那可是满满的回忆。记得我们上中学那时候读过的意林,那可是一本接着一本,其中有很多令人感动的故事,一直被温暖,被治愈。接下......
  • python爬取公众号链接里面的图片
    话不多说,步入今天文章的分享内容,今天给大家带来的是~~爬取微信公众号文章里面的图片。爬虫代码:#coding:utf-8#__auth__="maiz"#__date__="2021/3/27"importosimport......
  • Python中使用xpath一键获取各国国旗
    国旗是一个国家的主权意识不断增强后必然的产物,国旗是国家的一种标志性旗帜,是国家的象征。代表着一个国家的主权和民族的尊严。每个国家的国旗都由特有的颜色和图案构成,这些......
  • Python一键查询 ICP 备案详情
    做搜索引擎优化的都时长面临一个问题,就是网站备案到底对seo是否有影响呢,今天将为大家仔细分析网站备案,到底对SEO有没有影响?首先说下网站备案的目的、是为了防止在网上从事......
  • 使用Python的asyncio模块异步下载整站壁纸
    这篇文章主要给大家介绍关于Python中asyncio模块的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学......
  • 使用python爬取B站视频
    B站之所以火,是因为趣味与知识并存。正如一句“你在B站看番,我在B站学习”,B站还是有一些质量比较好的学习视频。当你在B站上看到喜欢的视频想保存下来时,怎么办呢?我相信很多逛B......
  • Python 爬取人人视频
    hello,小伙伴们,又见面了,距离上一次发布文章的时间,也算是久别重逢了。期间也发生了很多的事情,导致博文断更,也是笔者不愿意的,但是确实是比较忙,不再过多赘述,希望大家能够体谅。......
  • Python爬取快手博主所有视频
    随着互联网经济的快速发展和自媒体行业的普及,越来越多的视频创作者加入了短视频平台,不仅快速的推动了短视频平台行业的发展,也给大众带来了更多新鲜有趣的知识和内容。据最新......