广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫-04:贴吧爬虫以及GE
  • 242
分享到

Python爬虫-04:贴吧爬虫以及GE

爬虫贴吧Python 2023-01-30 23:01:02 242人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录 1. URL的组成 2. 贴吧爬虫 2.1. 只爬贴吧第一页 2.2. 爬取所有贴吧的页面

目录

  • 1. URL的组成
  • 2. 贴吧爬虫
    • 2.1. 只爬贴吧第一页
    • 2.2. 爬取所有贴吧的页面
  • 3. GET和POST的区别
    • 3.1. GET请求
    • 3.2. POST请求
    • 3.3. 有道翻译模拟发送POST请求


汉字通过URL encode(UTF-8)编码出来的编码,里面的字符全是打字节

如果你复制粘贴下来这个网址,出来的不是汉字,而是编码后的字节
https://www.baidu.com/s?wd=%E7%BC%96%E7%A8%8B%E5%90%A7

我们也可以在python中做转换-urllib.parse.urlencode

import urllib.parse.urlencode
url = "Http://www.baidu.com/s?"
wd = {"wd": "编程吧"}
out = urllib.parse.urlencode(wd)
print(out)

结果是: wd=%E7%BC%96%E7%A8%8B%E5%90%A7

2.1. 只爬贴吧第一页

import urllib.parse
import urllib.request

url = "http://www.baidu.com/s?"
keyWord = input("Please input query: ")

wd = {"wd": keyword}
wd = urllib.parse.urlencode(wd)

fullurl = url + "?" + wd
headers = {"User-Agent": "Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
request = urllib.request.Request(fullurl, headers = headers)
response = urllib.request.urlopen(request)
html = response.read()

print(html)

2.2. 爬取所有贴吧的页面

对于一个贴吧(编程吧)爬虫,可以翻页,我们可以总结规律

page 1: http://tieba.baidu.com/f?kw=%E7%BC%96%E7%A8%8B&ie=utf-8&pn=0 
page 2: http://tieba.baidu.com/f?kw=%E7%BC%96%E7%A8%8B&ie=utf-8&pn=50
page 3: http://tieba.baidu.com/f?kw=%E7%BC%96%E7%A8%8B&ie=utf-8&pn=100
import urllib.request
import urllib.parse

def loadPage(url,filename):
    """
        作用: url发送请求
        url:地址
        filename: 处理的文件名
    """
    print("正在下载", filename)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
    request = urllib.request.Request(url, headers=headers)
    response = urllib.request.urlopen(request)
    html = response.read()
    return html



def writePage(html,filename):
    """
        作用:将html内容写入到本地
        html:服务器响应文件内容
    """
    print("正在保存",filename)
    with open(filename, "wb") as f:
        f.write(html)
    print("-"*30)


def tiebaSpider(url, beginPage, endPage):
    """
        作用:贴吧爬虫调度器,复制组合处理每个页面的url
    """
    for page in range(beginPage, endPage + 1):
        pn = (page - 1) * 50
        filename = "第" + str(page) + "页.html"
        fullurl = url + "&pn=" + str(pn)
        html = loadPage(fullurl,filename)
        writePage(html,filename)


if __name__ == "__main__":
    kw = input("Please input query: ")
    beginPage = int(input("Start page: "))
    endPage = int(input("End page: "))

    url = "http://tieba.baidu.com/f?"
    key = urllib.parse.urlencode({"kw":kw})
    fullurl = url + key
    tiebaSpider(fullurl, beginPage, endPage)

结果是:

Please input query: 编程吧
Start page: 1
End page: 5
正在下载 第1页.html
正在保存 第1页.html
------------------------------
正在下载 第2页.html
正在保存 第2页.html
------------------------------
正在下载 第3页.html
正在保存 第3页.html
------------------------------
正在下载 第4页.html
正在保存 第4页.html
------------------------------
正在下载 第5页.html
正在保存 第5页.html
------------------------------


  • GET: 请求的url会附带查询参数
  • POST: 请求的url不会

3.1. GET请求

对于GET请求:查询参数在QueryString里保存

3.2. POST请求

对于POST请求: 茶韵参数在WebFORM里面



3.3. 有道翻译模拟发送POST请求

  1. 首先我们用抓包工具获取请求信息
POST http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=uGC&sessionFrom=null HTTP/1.1
Host: fanyi.youdao.com
Connection: keep-alive
Content-Length: 254
Accept: application/JSON, text/javascript, **; q=0.01",
    "X-Requested-With" : "XMLHttpRequest",
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
    "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8"
}

# 输入用户接口
key = input("Please input english: ")

# 模拟有道翻译传回的form数据
# 这是post发送到服务器的form数据,post是有数据提交到web服务器的,与服务器做一个交互,通过传的数据返回响应的文件,而get不会发数据
formdata = {
    "i":key,
    "doctype":"json",
    "version":"2.1",
    "keyfrom":"fanyi.web",
    "action":"FY_BY_REALTIME",
    "typoResult": "false"
}

# 通过转码
data = urllib.parse.urlencode(formdata).encode("utf-8")
# 通过data和header数据,就可以构建post请求,data参数有值,就是POST,没有就是GET
request = urllib.request.Request(url, data=data, headers=headers)
response = urllib.request.urlopen(request)
html = response.read()

print(html)

结果如下:

Please input english: hello
b'                          {"type":"EN2ZH_CN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"hello","tgt":"\xe4\xbd\xa0\xe5\xa5\xbd"}]]}\n'

--结束END--

本文标题: Python爬虫-04:贴吧爬虫以及GE

本文链接: https://www.lsjlt.com/news/180691.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python爬虫-04:贴吧爬虫以及GE
    目录 1. URL的组成 2. 贴吧爬虫 2.1. 只爬贴吧第一页 2.2. 爬取所有贴吧的页面 ...
    99+
    2023-01-30
    爬虫 贴吧 Python
  • 怎么用JavaScript爬虫百度贴吧数据
    这篇文章主要介绍“怎么用JavaScript爬虫百度贴吧数据”,在日常操作中,相信很多人在怎么用JavaScript爬虫百度贴吧数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • Python爬虫-01:爬虫的概念及分类
    目录 # 1. 为什么要爬虫 2. 什么是爬虫? 3. 爬虫如何抓取网页数据? # 4. Python爬虫的优势? ...
    99+
    2023-01-30
    爬虫 概念 Python
  • 用Python写一个小爬虫吧!
    学习了一段时间的web前端,感觉有点看不清前进的方向,于是就写了一个小爬虫,爬了51job上前端相关的岗位,看看招聘方对技术方面的需求,再有针对性的学习。 我在此之前接触过Python,也写过一些小脚本,于是决定用Python来完成这个小...
    99+
    2023-01-30
    爬虫 Python
  • bs4爬虫实战一:获取百度贴吧内容
    目标分析:进入百度贴吧,访问: https://tieba.baidu.com/index.html搜索权利的游戏定义需要爬取的数据,爬取每个帖子上面的内容定位到每个帖子,即取 li标签 里面 'class'=&#...
    99+
    2023-01-30
    爬虫 贴吧 实战
  • 什么是Python爬虫以及如何使用
    本篇文章给大家分享的是有关什么是Python爬虫以及如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采...
    99+
    2023-06-02
  • 什么是Python爬虫及用法
    什么是Python爬虫及用法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在学习爬虫之前我们需要明白的一个问题:爬虫能做什么?爬虫除了能够获取互联网的数据以外还能够帮我们完成很...
    99+
    2023-06-02
  • 如何用Python网络爬虫抓取百度贴吧评论区图片和视频
    如何用Python网络爬虫抓取百度贴吧评论区图片和视频,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片...
    99+
    2023-06-01
  • Python爬虫是什么及怎么应用
    本篇内容介绍了“Python爬虫是什么及怎么应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!爬虫网络爬虫(又被称为网页蜘蛛,网络机器人)就...
    99+
    2023-07-02
  • 如何使用Python编写多线程爬虫抓取百度贴吧邮箱与手机号
    本篇文章给大家分享的是有关如何使用Python编写多线程爬虫抓取百度贴吧邮箱与手机号,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。不知道大家过年都是怎么过的,反正栏主是在家睡了...
    99+
    2023-06-17
  • 以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
    1.安装BeautifulSoup4 easy_install安装方式,easy_install需要提前安装 easy_install beautifulsoup4 pip安装方式,pip也需要提前...
    99+
    2022-06-04
    爬虫 神器 实例
  • Python 网页爬虫原理及代理 IP 使用
    目录 前言 一、Python 网页爬虫原理 二、Python 网页爬虫案例 步骤1:分析网页 步骤2:提取数据 步骤3:存储数据 三、使用代理 IP 四、总结 前言 随着互联网的发展,网络上的信息量变得越来越庞大。对于数据分析人员和研究...
    99+
    2023-09-14
    python 爬虫 tcp/ip
  • Python 爬虫多线程详解及实例代码
    python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用。 虽然...
    99+
    2022-06-04
    爬虫 多线程 详解
  • python爬虫之Appium爬取手机App数据及模拟用户手势
    目录Appium模拟操作屏幕滑动屏幕点击屏幕拖动屏幕拖拽文本输入动作链实战:爬取微博首页信息 Appium 在前文的讲解中,我们学会了如何安装Appium,以及一些基础获取App元素...
    99+
    2022-11-12
  • 【用Vscode实现简单的python爬虫】从安装到配置环境变量到简单爬虫以及python中pip和request,bs4安装
    第一步:安装python包  可以默认,也可以选择自己想要安装的路径 python下载资源链接: Download Python | Python.org 第二步:配置python环境变量,找到我的电脑->属性->高级->环境变量 找...
    99+
    2023-09-24
    vscode python ide
  • Python实现的异步代理爬虫及代理池
    使用python asyncio实现了一个异步代理池,根据规则爬取代理网站上的免费代理,在验证其有效后存入redis中,定期扩展代理的数量并检验池中代理的有效性,移除失效的代理。同时用aiohttp实现了一...
    99+
    2022-06-04
    爬虫 Python
  • Python之Scrapy爬虫框架安装及使用详解
    题记:早已听闻python爬虫框架的大名。近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享。有表述不当之处,望大神们斧正。 一、初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构...
    99+
    2022-06-04
    爬虫 详解 框架
  • Python爬虫必备之Xpath简介及实例讲解
    目录前言一、Xpath简介二、Xpath语法规则语法规则标签定位属性定位索引定位取文本内容三、语法规则练习总结前言 网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学...
    99+
    2022-11-10
  • python爬虫之selenium库的安装及使用教程
    目录第一步:python中安装selenium库第二步:下载谷歌浏览器驱动并合理放置第三步:使用selenium爬取QQ音乐歌词(简单示例)第一步:python中安装selenium...
    99+
    2022-11-12
  • 爬虫基本原理介绍、实现以及问题解决
    文章目录 一、爬虫的意义1.前言2.爬虫能做什么3.爬虫有什么意义 二、爬虫的实现1.爬虫的基础原理2.api的获取3.爬虫实现 三、反爬解决方案1.反爬的实现方式2.反爬的解决方法3...
    99+
    2023-09-02
    python 爬虫
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作