首页 > 其他分享 >requests+编码模块+百度贴吧数据抓取

requests+编码模块+百度贴吧数据抓取

时间:2023-11-18 19:22:40浏览次数:34  
标签:baidu http url self 抓取 html 模块 requests

1.查看本地发送过去的头文件
import requests
html = requests.get(url='http://httpbin.org/get').text
print(html)

2.编码模块使用  //使用原因:URL不能识别中文编码,中文转换为编码模式)

(1)urlencode()方法
from urllib import parse
params = parse.urlencode({'wd':'赵丽颖'})
url1 = 'http://www.baidu.com/s?' + params #URL拼接方式
url2 = 'http://www.baidu.com/s?%s' % params
url3 = 'http://www.baidu.com/s?{}'.format(params)
print(url1)
print(url2)
print(url3)
语法:format方法,格式化输出 (传参方式)
'{}_第{}页.html'.format('赵丽颖',9) 输出:‘赵丽颖_第9页.html’

(2)quote()方法 //字符串编码,同上类似
params = parse.quote('赵丽颖')

(3)例子   //百度搜索中从终端输入搜索关键字,保存HTML文件到本地

import requests
# 1.拼接URL
keyword = input('请输入关键字:')
params = parse.urlencode({'wd':keyword})
url = 'http://www.baidu.com/s?{}'.format(params)
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}
# 2.发送请求获取响应内容
html = requests.get(url=url, headers=headers).content.decode('utf-8') #直接使用text替代.content.decode('utf-8')可能有乱码
# 3.保存文件到本地
filename = '{}.html'.format(keyword)
with open(filename, 'w', encoding='utf-8') as f:
f.write(html)
#windows默认gbk,linux为utf-8

3.百度贴吧数据抓取实战

需求:a.输入贴吧名称(赵丽颖吧)  b.输入起始页:1    c.输入终止页:2   d.保存到本地文件: 赵丽颖吧_第1页.html、赵丽颖吧_第2页.html

思路:
(1)查看抓取的数据在响应内容中是否存在(右键--查看网页源码--搜索所抓数据关键字)
(2)查看并分析URL地址规律:
第1页:http://tieba.baidu.com/f?kw=???&pn=0
第2页:http://tieba.baidu.com/f?kw=???&pn=50
第n页:pn=(n-1)*50
(3)发请求获取响应内容
(4)保存到本地文件

代码如下:
import requests
from urllib import parse
import time
import random

class BaiduSpider:
  def __init__(self):
    """定义常用变量"""
    self.url = 'http://tieba.baidu.com/f?kw={}&pn={}'
    self.headers = headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}

  def get_html(self, url):
    """请求的功能函数,获取响应内容html"""
    html = requests.get(url=url, headers=self.headers).content.decode('utf-8')
    return html

  def parse_html(self):
    """"解析的功能函数,解析提取数据"""
    pass

  def save_html(self, filename, html):
    """"数据处理的功能函数,把数据存入数据库,本地文件..."""
    with open(filename, 'w', encoding='utf-8') as f:
    f.write(html)

  def run(self):
    """"程序入口函数"""
    name = input('请输入贴吧名:')
    start = int(input('请输入起始页:'))
    end = int(input('请输入终止页:'))
    # 编码
    params = parse.quote(name)
    for page in range(start, end + 1):
      pn = (page - 1) * 50
      page_url = self.url.format(params, pn)
      # 调用请求功能函数
      html = self.get_html(url=page_url)
      #调用保存函数功能函数
      filename = '{}_第{}页.html'.format(name, page)
      self.save_html(filename, html)
      #终端提示
      print('第%d页抓取完成' % page)
      # 控制数据抓取频率,每抓取一个页面随机休眠一段时间
      time.sleep(random.randint(1,2)) #每抓取一个页面随机休眠1-2分钟

if __name__ == '__main__':
  spider = BaiduSpider()
  spider.run()

标签:baidu,http,url,self,抓取,html,模块,requests
From: https://www.cnblogs.com/huchao12/p/17840963.html

相关文章

  • 微博cookie批量自动私信脚本,协议版,可发图片文字,用鱼刺模块开发!
    这个软件我也开源出来,包括DLL部分,程序集,完整的都分享给大家,方便大家学习一下代码的结构和运行原理,很多人都会开发这类的软件,但是都调用了填表模块,协议的很少会,那么这个软件就是一个非常不错的一个参考案例,仅供学习哈。UI部分: 程序集代码:===================================......
  • 抖音自动关注点赞评论脚本,可批量导入视频连接,易语言精易VIP模块开发
    这个软件也是客户定制的,然后调用的是精易论坛的一个VIP模块,一个月收费10块钱,但是功能很强大,它可以直接调用你电脑上安装的谷歌浏览器,然后在浏览器里面直接执行数据功能,比如数据包截取,COOKIE的导入导出,还有JS网页端直接,填表操作等功能,所以用这个模块开发了一个抖音私信的功能,可以直......
  • Proxifier+Burp 抓取微信PC端小程序数据包
    由于工作要求,需要抓取微信小程序的数据包,如是了解了一下,简直是解放了一片新大陆啊!以下是记录Proxifier+Burp使用过程。现有环境BurpSuite可正常使用,能抓取浏览器HTTP/HTTPS流量。(BurpSuite的安装以及使用方法可自行百度)BurpSuite代理设置为如下图:Proxifier+Burp抓取微信H......
  • 手撕Vuex-安装模块方法
    前言经过上一篇文章的介绍,我们实现了将模块安装到store中,那么本章我们就来介绍一下怎么安装模块当中的方法也就是actions、mutations、getters。所以本次文章的目标就是将模块当中的actions、mutations、getters安装到store中,然后在组件中使用。分析阶段那么安装acti......
  • 【Node.js】 - 概念 fs path模块 压缩HTML代码
    一、概念Node.js是一个跨平台javaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序作用:1.编写数据接口,提供网页资源浏览功能等等2.前端工程化二、什么是前端工程化开发项目直到上线,过程中集成的所有工具和技术Node.js是前端工程化的基础(因为Node.js可以主动读取前端代......
  • 智慧工地平台,利用5G及智能终端算法,实现IOT设备数据抓取与处理
    智慧工地平台采用先进的云计算、物联网和大数据技术,可以实现智慧工地方案的落地。能够实现实时掌控工地活动及各项进度,有效预防违章施工。能够为工地提供多项服务,如安全预警、机械智能监控、作业指导、绿色施工、劳务管理、工程进度监控、施工质量检查等。可实时收录及通知施工进度......
  • 记录一个按键处理模块
    本模块模仿MultiButton实现的。GitHub:https://github.com/0x1abin/MultiButton按键状态参考DALI协议301部分按键状态。分享测试文件:链接:https://pan.baidu.com/s/1dqXc-_ycR-Tl-KQtsxJs4A提取码:1234 按键状态分为以下状态:typedefenum{  KeyEvent_Idle=0,  ......
  • 硬件开发笔记(十二):RK3568底板电路电源模块和RTC模块原理图分析
    前言  做硬件做系统做驱动,很难从核心板做起,所以我们先依赖核心板,分析底板周围的电路,然后使用AD绘制原理图和设计PCB,打样我司测试底板,完成硬件测试,再继续系统适配,驱动移植,从而一步一步完善成为一个功能完善的底板,且搭载了我们跳完的系统和驱动。  本篇文章,先从底板的电源电......
  • 制造业工厂万界星空科技云MES系统中的设备管理模块
    随时工厂数字化建设的大力推进,设备管理的效率得到了很大的提升,特别是作为机加工企业,设备是整个企业非常重要的核心资产。1、MES设备管理任务模型制造企业总是期望设备能够在计划生产的时间段内处于良好的运行状态,而在实际生产活动中,对设备的长时间可用与高度可靠性要求之间往往无法......
  • 抖音号转uid工具,输入抖音ID自动转UID获取对方信息,精易模块v8.0实现
    用易语言实现的,实现非常简单,多余的我不介绍,你看下代码和设计的界面,还有设计。效果图:  下面是完整代码:==================================================.版本2.支持库spec.程序集窗口程序集_启动窗口.子程序_按钮1_被单击功能_网页访问(编辑框1.内容).子程......