首页 > 其他分享 >网络库

网络库

时间:2024-01-16 16:35:13浏览次数:22  
标签:baidu tieba app 网络 urllib https com

网络库

在学习爬虫过程中,我们需要了解三种基本的网络库。

  • urllib
  • urllib3
  • requests

一、urllib网络库

urllib包含四个模块

1、request:最基本的HTTP请求模块,可以用来发送HTTP请求,并接受服务端的响应数据。

2、error:异常处理模块。

3、parse:工具模块,提供了很多处理URL的API,如拆分、解析、合并等

4、robotparser:主要用来识别网站的robots文件,然后判断哪些网站可以抓取,哪些不能抓取

from urllib import request
#前者是解码,后者是编码
from urllib.parse import unquote,urlencode
#导入异常
import urllib.error
url = 'http://httpbin.org/post'
headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        'Host':'httpbin.org',
        #设置中文请求头,需要对中文进行编码,否则抛出异常
        'Chinese':urlencode({'name':'李宁'}),
}
#使用try...except语句来捕捉异常
try:
        res = request.Request(url = url,headers=headers,method='POST')
        response = request.urlopen(res)
except urllib.error.URLError as e:
        print(e)
value = response.read().decode('utf-8')
print(value)
import json
#将返回值转换成json格式
responseObj = json.loads(value)
#对中文进行解码
print(unquote(responseObj['headers']['Chinese']))

结果

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Chinese": "name=%E6%9D%8E%E5%AE%81", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-65a6140e-01aabf6d3de5c429217fa5d5"
  }, 
  "json": null, 
  "origin": "171.41.72.7", 
  "url": "http://httpbin.org/post"
}

name=李宁

二、代理的使用

在使用爬虫时,往往会遇到许多的反爬技术,其中之一就是通过客户端的IP鉴别是否为爬虫。如果同一个IP在短时间内大量访问服务器的不同页面,那么既有可能是爬虫,并且很有可能对客户端的IP临时或永久禁用。这样,我们就不能在访问任何网页的内容。所以在使用爬虫获取资源时,我们需要使用代理IP,这个IP我们需要通过网站进行购买,购买后,一般会提供如何使用该代理IP的方法,以及代码,可以直复制,然后改变一些值就可以使用。

三、网络库urllib3

urllib主要侧重于URL的请求构造。而urllib3则是服务于升级的HTTP1.1,并且拥有高效的HTTP连接池管理及HTTP代理服务的功能库。

在这里,其实urllib3与urllib也没有很大的区别,主要区别在如下代码:

from urllib3 import *
#调用disable_warning函数可以阻止显示警告消息
disable_warnings()
#创建PoolManager类的实例
http = PoolManager()
#但需要设置请求时间,可以在连接池里加上这个参数timeout=Timeout(connect=2.0,read=2.0)
#获取响应数据时
response = http.request('GET',url)
#但需要再请求头后面加参数,可以使用fields属性

四、网络库requests

1、GET请求

向服务端发送GET请求,要想为GET请求指定参数,可以直接在URL后面加,用问号(?)分隔,不过还有另外一种更好的方式,就是使用GET方法的params参数,该参数需要时一个字典类型的值。

2、POST请求

想GET请求一样,在向服务端发送POST请求时,需要指定data参数,也是一个字典值。

3、二进制数据

在使用网络库requests时,使用GET方法指定的不仅可以是网页,还可以是任何二进制文件。

4、处理cookie

在访问某些网站时,只有登录用户才能获得正常显示的内容,所以一般的做法是先在网页上登录。

这个爬虫程序我使用的是Beautiful Soup库解析数据的,后续将会对这个库做详细的解释

接下来将爬取百度贴吧的内容 ,URL:https://tieba.baidu.com/

#该网站我获取的主要资源是体育频道里的一些地址和网站名称
import requests
#导入BeautifulSoup库
from bs4 import BeautifulSoup
class TieBaSpider:
    def __init__(self):
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        }
    def get_html(self):
        for i in range(1,9):
            url = f'https://tieba.baidu.com/f/index/forumpark?pcn=%E4%BD%93%E8%82%B2%E8%BF%B7&pci=275&ct=0&rn=20&pn={i}'
            response = requests.get(url,headers=self.headers)
            if response.status_code == 200:
                html = response.text
                self.parse_html(html)
    #在解析函数里使用了bs4里的解析方法
    def parse_html(self,html):
        soup = BeautifulSoup(html,'lxml')
        app_href_list = soup.find_all(class_='ba_href clearfix')
        app_title_list = soup.find_all(class_='ba_name')
        app_src_list = soup.find_all(class_='ba_pic')
        for app_href,app_title,app_src in zip(app_href_list,app_title_list,app_src_list):
            #这里对爬取到的数据进行了拼接,使得成为一个完整的URL
            herfs = 'https://tieba.baidu.com'+app_href['href']
            print(herfs)
            #这里使用了一些方法获取属性值,后续会进行讲解
            print(app_title.string)
            print(app_src['src'])
if __name__ == '__main__':
    teiba = TieBaSpider()
    teiba.get_html()
https://tieba.baidu.com/f?kw=nba
nba吧
https://imgsa.baidu.com/forum/pic/item/9825bc315c6034a8c0ae628cc41349540923766b.jpg
https://tieba.baidu.com/f?kw=%E6%9B%BC%E8%81%94
曼联吧
https://imgsa.baidu.com/forum/pic/item/e4e49e510fb30f244192995ece95d143ac4b03cb.jpg
https://tieba.baidu.com/f?kw=%E7%A7%91%E6%AF%94
科比吧
https://tiebapic.baidu.com/forum/w%3D120%3Bh%3D120/sign=23790e19b424b899de3c7d3a5e3d75a8/adaf2edda3cc7cd9865110c06401213fb80e91ae.jpg?tbpicau=2024-01-18-05_af189dfda60f8cf673e8c6ce0e3af706
https://tieba.baidu.com/f?kw=%E7%9A%87%E5%AE%B6%E9%A9%AC%E5%BE%B7%E9%87%8C
皇家马德里吧
https://tiebapic.baidu.com/forum/w%3D120%3Bh%3D120/sign=598b8815b9039245a1b5e50db7afccff/562c11dfa9ec8a13f9622938b203918fa1ecc0ea.jpg?tbpicau=2024-01-18-05_6a447a21800c70adb9d7f4279325a23b
https://tieba.baidu.com/f?kw=%E5%B7%B4%E5%A1%9E%E7%BD%97%E9%82%A3
巴塞罗那吧
https://tiebapic.baidu.com/forum/w%3D120%3Bh%3D120/sign=deebd911beedab64747249c2c70dc7fe/d8f9d72a6059252daecebade719b033b5ab5b90b.jpg?tbpicau=2024-01-18-05_c9f0efa81d93d68b5e858d05edc853d3
https://tieba.baidu.com/f?kw=%E5%88%87%E5%B0%94%E8%A5%BF
切尔西吧
https://imgsa.baidu.com/forum/pic/item/a8773912b31bb05139b8c411317adab44aede06f.jpg

标签:baidu,tieba,app,网络,urllib,https,com
From: https://www.cnblogs.com/wjx-2005-07-01/p/17967967

相关文章

  • 电脑端网络记事本哪个安全稳定?
    随着互联网科技的飞速发展,越来越多的上班族发现在电脑上使用网络记事本的重要性。这种网络记事本不仅便于记录工作内容,而且自动将数据上传到云端进行备份,让用户不再为数据丢失而担忧。让我们来看看上班族使用网络记事本的好处。在日常工作中,我们需要记录会议纪要、项目进度、工作......
  • ESP32 Arduino开发 网络连接
    ESP32Arduino开发网络连接目录ESP32Arduino开发网络连接1.编写相关程序1.1.引入头文件1.2.调用WiFi连接函数1.3.检测网络连接状态1.4.连接超时处理2.STA模式与AP模式1.编写相关程序1.1.引入头文件WiFi.h并不是第三方的库,所以不需要先加载库#include<WiFi.h>1.......
  • 神经网络优化篇:详解指数加权平均的偏差修正(Bias correction in exponentially weighte
    指数加权平均的偏差修正\({{v}_{t}}=\beta{{v}_{t-1}}+(1-\beta){{\theta}_{t}}\)在上一个博客中,这个(红色)曲线对应\(\beta\)的值为0.9,这个(绿色)曲线对应的\(\beta\)=0.98,如果执行写在这里的公式,在\(\beta\)等于0.98的时候,得到的并不是绿色曲线,而是紫色曲线,可以注意到紫色曲线......
  • 网络流24题
    网络流24题网络流24题里第24题是一道假题,所以这里只有23道。已经按照我认为合适的顺序排列过了,可以直接按照这个顺序刷题。24题是谁总结出来的已经不太好考察了,但是24题基本上覆盖了网络流大多数的基础模型。刷完后可以掌握最基本的模型转化思维。默认读者能够使用网络流的板子......
  • R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化
    全文链接:https://tecdat.cn/?p=34827原文出处:拓端数据部落公众号在房地产市场中,准确地预测房屋价格是至关重要的。过去几十年来,随着数据科学和机器学习的快速发展,各种预测模型被广泛应用于房屋价格预测中。而R语言作为一种强大的数据分析和统计建模工具,被越来越多的研究者和从业......
  • 数据报告分享|WEKA贝叶斯网络挖掘学校在校人数影响因素数据分类模型
    全文链接:https://tecdat.cn/?p=33159原文出处:拓端数据部落公众号本文着眼普通高等学校在校学生人数,提出了不同种类学校的在校人数可能存在的影响关系从而探究教育现状的因素,建立分类模型,探求这几个因素间的数量关系。本文试图帮助客户通过研究不同种类学校的在校人数的关系,......
  • csharp c# http request get post put delete header respons json 网络请求
    C#中如何模拟一个post请求使用HttpClient代替。以下是修改后的代码示例:usingSystem;usingSystem.Net.Http;usingSystem.Text.Json;classHttpPostExample{privateasyncTask<string>HttpPost(stringUrl,objectpostData){stringpostDataStr=J......
  • LSP 网络劫持(Layered Service Provider Hijacking)
    LSP简介:分层服务提供商(LayeredServiceProvider,LSP)是一种可以扩展Winsock作为应用程序的Windows的网络套接字工具的机制。WinsockLSP可用于非常广泛的实用用途,包括Internet家长控制(parentalcontrol)和Web内容筛选。在以前版本的WindowsXP中,删除不正确的(也称......
  • LSP 网络劫持(Layered Service Provider Hijacking)
    LSP简介:分层服务提供商(LayeredServiceProvider,LSP)是一种可以扩展Winsock作为应用程序的Windows的网络套接字工具的机制。WinsockLSP可用于非常广泛的实用用途,包括Internet家长控制(parentalcontrol)和Web内容筛选。在以前版本的WindowsXP中,删除不正确的(也称......
  • iperf3网络测试工具
    iperf网络测试工具 iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具iperf安装:可以直接通过官网下载对应系统版本进行安装(https://iperf.fr/iperf-download.php)1.对于windows版的iPerf,直......