【爬虫练习】基于urllib库简单爬取贴吧案例

目录

文章代码基本流程:

一、关于urllib库

1.urllib.request

2.urllib.error:

3.urllib.parse:

二、爬取准备

三、编辑爬虫代码

1.导入包

2.获取网址并且得到相应的类

3.主类(用于获取页数,以及网站的类)

4.用于把获取到的网站下载储存的类

总结:

关于反反爬取策略:


前言:在本篇文章中会通过介绍urllib库的大致内容以及用法,然后基于urllib库使用PyCharm编辑器进行对贴吧的实操代码练习。最后进行对于这个案例的练习进行总结。


文章代码基本流程:

  1. 目标网站分析
    在开始爬虫之前,需要对目标网站进行分析,了解其结构、数据抓取方式等信息。这有助于我们制定合理的抓取策略,避免触犯法律法规和影响网站的正常运行。

  2. 模拟请求
    使用requests库模拟浏览器发送HTTP请求,获取目标网页的内容。这一步是爬虫的基础,需要掌握HTTP协议、请求头设置、代理设置等知识点。

  3. 数据提取
    通过解析HTML,我们可以使用BeautifulSoup或Scrapy等库提取出所需的数据。在提取数据时,需要注意数据清洗和去重等问题,以保证数据的准确性和质量。

  4. 数据存储

  5. 将提取到的数据存储到数据库或文件中,方便后续的分析和处理。常用的存储方式包括CSV文件、数据库等。


一、关于urllib库

在Python中,urllib库是一个非常重要的工具,用于处理和操纵URLs发送HTTP请求以及解析返回的数据。它是Python标准库的一部分,使得开发者可以轻松地与Web服务进行交互。

urllib库可以分为三个部分:urllib.request, urllib.errorurllib.parse。下面,我们将一一介绍这些部分。

1.urllib.request

这是urllib库的主要部分,用于发送HTTP请求。我们可以使用它来打开和读取URLs。例如,如果你想要从一个URL获取内容,你可以这样做:

import urllib.request  
  
response = urllib.request.urlopen('http://www.csdn.net')  
data = response.read()

2.urllib.error:

这个部分包含了一些异常类,这些异常可能在urllib.request函数调用时抛出。例如,当你试图打开一个不存在的URL时,urlopen函数会抛出URLError异常。

3.urllib.parse:

这个部分提供了对URLs进行操作的函数。例如,你可以使用quote函数对字符串进行URL编码,或者使用unquote函数对URL编码的字符串进行解码。


在处理Web数据时,urllib库是一个非常有用的工具。然而,如果我们正在处理复杂的Web请求,或者需要更高级的HTTP功能(如身份验证,cookies等),可能需要查看更高级的库,如requests库。尽管如此,理解urllib库的基础知识将为你提供构建更复杂Web应用程序所需的知识。


二、爬取准备

1.在爬取前可以先打开目标网页,获取网页的地址

然后按下F12键或者鼠标右键选择“检查”打开开发人员工具

点击上方那一栏的“Network”

当到达这一界面的时候,可以去刷新一下主页面(开发者工具页面保持打开状态)

找到User-Agent(代码爬取需要用到的,也可以去网上搜索获取)

点进多个贴吧里面观察网址

会发现其实他们是有规律的

所以当这些我们都了解完毕后,在编辑代码的过程就回很简单很多。


三、编辑爬虫代码

1.导入包

from urllib.request import Request, urlopen
from urllib.parse import urlencode

2.获取网址并且得到相应的类

def get_html(url):
    headers = {
        "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
    }
    request = Request(url,headers = headers)
    response = urlopen(request)
    response.read().decode()
    return response.read()

3.主类(用于获取页数,以及网站的类)

def main():
     content = input("请输入要下载的内容:")
     num = input("请输入起始页: ")
     end_page = int(input("请输入结束页: "))
     base_urt = "https: // tieba.baidu.com / f?{}"
     for pn in range(int(num), int(end_page)):
            args = {
                "pn": (pn - 1) * 50,
                "kw": content
            }
            filename = "第" + str(pn) + "页.html"
            args = urlencode(args)
            print("正在下载" + filename)
            html_bytes = get_html(base_urt.format(args))
            save_html(filename, html_bytes)

4.用于把获取到的网站下载储存的类

def save_html(fliename,html_bytes):
    pass
    with open(fliename,"wb") as f:
        f.write(html_bytes)

之后运行结果如下:

下载的文件是以html的形式保存,点击会直接跳到网址。

总结:

通过这些示例,读者可以更好地理解urllib库的基础知识和使用方法。urllib库是一个功能强大的工具,可以帮助开发者轻松地与Web服务进行交互,获取和处理数据。虽然它可能不如更高级的库(如requests)那么灵活和强大,但理解其工作原理和基本用法对于构建更复杂的Web应用程序至关重要。

总的来说,本文旨在为读者提供有关urllib库的深入了解和使用指南,帮助读者更好地利用这个强大的工具进行网络编程。


关于反反爬取策略:

反反爬虫策略
在进行大规模数据抓取时,可能会遇到目标网站的反爬虫机制,如限制访问频率、检测User-Agent等。为了应对这些限制,我们需要了解反反爬虫策略,如使用代理IP、模拟登陆、修改User-Agent等技巧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值