商务服务
爬虫 http error 403: forbidden_价值2w的爬虫教程
2024-12-06 08:46
爬虫 http error 403: forbidden_价值2w的爬虫教程 爬虫

我们先自己想象一下平时到天猫商城购物(PC端)的步骤,可能就是打开浏览器==》搜索天猫商城==》点击链接进入天猫商城==》选择所需商品类目(站内搜索==》浏览商品(价格、详情参数、评论等==》点击链接==》进入下一个商品页面,……这样子周而复始。当然这其中的搜索也是爬虫的应用之一。简单讲,网络爬虫是类似又区别于上述场景的一种程序。

  • 分类与关系一般最常用的爬虫类型主要有通用爬虫和聚焦爬虫,其中聚焦爬虫又分为浅聚焦与深聚焦,三者关系如下图

网络爬虫可以做的事情很多,如以下列出

  • 搜索引擎
  • 采集数据(金融、商品、竞品等
  • 广告过滤
  • ……

其实就我们个人兴趣,学完爬虫我们可以看看当当网上哪种技术图书卖得比较火(销量、评论等信息)、看某个在线教育网站哪门网络课程做得比较成功、看双十一天猫的活动情况等等,只要我们感兴趣的数据,一般的话都可以爬取得到,不过有些网站比较狡猾,设置各种各样的反扒机制。总而言之,网络爬虫可以帮助我们做很多有趣的事情。

个人建议本章除3.3以外,其他内容可以大致先看一下,有些许印象即可,等到后面已经完成一些简单爬虫后或者在写爬虫过程中遇到一些问题再回头来巩固一下,这样子或许更有助于我们进一步网络理解爬虫。

HTTP 协议是爬虫的基础,通过封装 TCP/IP 协议链接,简化了网络请求的流程,使得用户不需要关注三次握手,丢包超时等底层交互。

关于HTTP协议可以参考一下博文

  • HTTP 请求方法对照表
  • HTTP 响应头和请求头信息对照表
  • HTTP 状态码对照表
  • HTTP Content-type 对照表

作为新手,个人觉得入门的话懂一点HTML与Javascript就可以实现基本的爬虫项目,HTML主要协助我们处理静态页面,而实际上很多数据并不是我们简单的右击查看网页源码便可以看到的,而是存在JSON(Javascript Object Notation)文件中,这时我们便需要采取抓包分析,详见《5.2 爬取基于Ajax技术网页数据》。

  • HTML 教程
  • Javascript 教程

做爬虫必不可少的步骤便是做解析。正则表达式是文本匹配提取的利器,并且被各种语言支持。XPath即为XML路径语言,类似Windows的文件路径,区别就在XPath是应用在网页页面中来定位我们所需内容的精确位置。具体用法参考以下资料

  • 正则表达式教程
  • Python3如何优雅地使用正则表达式
  • XPath教程

Python 是一种十分便利的脚本语言,广泛被应用在各种爬虫框架。Python提供了如urllib、re、json、pyquery等模块,同时前人又利用Python造了许许多多的轮,如Scrapy框架、PySpider爬虫系统等,所以做爬虫Python是一大利器。

  • 说明:本章开发环境细节如下
    • 系统环境:windows 8.1
    • 开发语言:Python3.5
    • 开发工具:Spyder、Pycharm
    • 辅助工具:Chrome浏览器

Python3中,只有Unicode编码的为str,其他编码格式如gbk,utf-8,gb2312等都为bytes,在编解码过程中字节bytes通过解码方法decode()解码为字符串str,然后字符串str通过编码方法encode()编码为字节bytes,关系如下图

4.4.1 网络爬虫中处理异常的种类与关系

  • URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。
  • HTTPError首先我们要明白服务器上每一个HTTP 应答对象response都包含一个数字“状态码”,该状态码表示HTTP协议所返回的响应的状态,这就是HTTPError。比如当产生“404 Not Found”的时候,便表示“没有找到对应页面”,可能是输错了URL地址,也可能IP被该网站屏蔽了,这时便要使用代理IP进行爬取数据,关于代理IP的设定我们下面会讲到。
  • 两者关系两者是父类与子类的关系,即HTTPError是URLError的子类,HTTPError有异常状态码与异常原因,URLError没有异常状态码。所以,我们在处理的时候,不能使用URLError直接代替HTTPError。同时,Python中所有异常都是基类Exception的成员,所有异常都从此基类继承,而且都在exceptions模块中定义。如果要代替,必须要判断是否有状态码属性。

4.4.2 Python中有一套异常处理机制语法

  • try-except语句
  • try-except-finally语句Python

import urllib.request

import urllib.error

import traceback

import sys

try:

except Exception as er1:

import urllib.request

import urllib.error

try:

except urllib.error.URLError as er2:

import urllib.request

import urllib.error

try:

except urllib.error. HTTPError as er3:

|

Exception异常捕获输出结果如下

异常概要

HTTP Error 403: Forbidden

异常类型

异常信息或参数:HTTP Error 403: Forbidden

调用栈信息的对象

已从堆栈中“辗转开解”的函数有关的信息:None

|

一般客户端需要通过HTTP请求才能与服务端进行通信,常见的HTTP请求有POST与GET两种。例如我们打开淘宝网页后一旦HTML加载完成,浏览器将会发送GET请求去获取图片等,这样子我们才能看到一个完整的动态页面,假如我们浏览后需要下单那么还需要向服务器传递登录信息。

  • GET方式向服务器发索取数据的一种请求,将请求数据融入到URL之中,数据在URL中可以看到。
  • POST方式向服务器提交数据的一种请求,将数据放置在HTML HEADER内提交。从安全性讲,POST方式相对于GET方式较为安全,毕竟GET方式是直接将请求数据以明文的形式展现在URL中。
  • 实战——登录CSDN/百度搜索简书

cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

参考:零基础自学用Python 3开发网络爬虫(四): 登录

  • 原理浏览器伪装是防屏蔽的方法之一,简言之,其原理就是在客户端在向服务端发送的请求中添加报头信息,告诉服务器“我是浏览器”
  • 如何查看客户端信息通过Chrome浏览器按F12==》选择Network==》刷新后点击Name下任一个地址,便可以看到请求报文和相应报文信息。以下是在百度上搜索简书的请求报文信息,在爬虫中我们只需添加报头中的User-Agent便可实现浏览器伪装。
  • 实战——代理服务器爬取百度首页
  • Ajax(异步加载)的技术网站中用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中。简单讲就是打开网页,先展现部分内容,再慢慢加载剩下的内容。显然,这样的网页因为不用一次加载全部内容其加载速度特别快,但对于我们爬虫的话就比较麻烦了,我们总爬不到我们想要的内容,这时候就需要进行抓包分析。
  • 抓包工具推荐Fiddler与Chrome浏览器
  • 实战请转《5.2 爬取基于Ajax技术网页数据》。

一般我们程序是单线程运行,但多线程可以充分利用资源,优化爬虫效率。实际上Python 中的多线程并行化并不是真正的并行化,但是多线程在一定程度上还是能提高爬虫的执行效率,下面我们就针对单线程和多线程进行时间上的比较。

  • 实战——爬取豆瓣科幻电影网页
  • 结果
  • 更多详情请参考Python 并行任务技巧Python中的多进程处理
  • 本地文件(excel、txt
  • 数据库(如MySQL

备注:具体实战请看5.1

在登录过程中我们常遇到验证码问题,此时我们有必要对其进行处理。

  • 简单验证码识别利用pytesser识别简单图形验证码,有兴趣的童鞋,请参考Python验证码识别。
  • 复杂验证码识别这相对有难度,可以调用第三方接口(如打码兔)、利用数据挖掘算法如SVM,有兴趣参考字符型图片验证码识别完整过程及Python实现

(1)需求

爬取豆瓣网出版社名字并分别存储到excel、txt与MySQL数据库中。

(2)分析

  • 查看源码
  • Ctrl+F搜索任意出版社名字,如博集天卷
  • 确定正则模式

(3)思路

  • 下载目标页面
  • 正则匹配目标内容
  • Python列表存储
  • 写入Excel/txt/MySQL

(4)源码

'''信息存储'''

import urllib

import re

import xlsxwriter

import MySQLdb

def gxls_concent(target_url,pat):

def wxls_concent(ret_xls,ret_concent):

def wtxt_concent(ret_txt,ret_concent):

def mainXlsTxt():

def db_con():

def exeSQL(sql):

def gdb_concent(target_url,pat):

def wdb_concent(tbl_name,ret_concent):

def mainDb():

if name == 'main':

|

(5)结果

(2)分析

  • 岗位数据在哪里打开拉勾网==》输入关键词“数据挖掘”==》查看源码==》没发现岗位信息打开拉勾网==》输入关键词“数据挖掘”==》按F12==》Network刷新==》按下图操作
  • Json数据结构怎么样

5.3.1 了解Scrapy

Scrapy使用了Twisted异步网络库来处理网络通讯。整体架构大致如下(注:图片来自互联网

5.3.2 Scrapy自动爬虫

前面的实战中我们都是通过循环构建URL进行数据爬取,其实还有另外一种实现方式,首先设定初始URL,获取当前URL中的新链接,基于这些链接继续爬取,直到所爬取的页面不存在新的链接为止。

(1)需求

采用自动爬虫的方式爬取糗事百科文章链接与内容,并将文章头部内容与链接存储到MySQL数据库中。

(2)分析

  • 怎么提取首页文章链接打开首页后查看源码,搜索首页任一篇文章内容,可以看到”/article/118123230″链接,点击进去后发现这就是我们所要的文章内容,所以我们在自动爬虫中需设置链接包含”article”
    • 链接打开任一详情页,复制详情页链接,查看详情页源码,搜索链接如下

(3)项目源码

创建爬虫项目

打开CMD,切换到存储爬虫项目的目录下,输入

定义items

import scrapy

class QsbkautoItem(scrapy.Item):

|

编写爬虫

  • qsbkauto.py
  • pipelines.py
  • setting.py关闭ROBOTSTXT_OBEY设置USER_AGENT开启ITEM_PIPELINES

执行爬虫

scrapy crawl qsbkauto --nolog

结果

    以上就是本篇文章【爬虫 http error 403: forbidden_价值2w的爬虫教程】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/4039.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
入境游订单同比增长123%!福州旅游市场迎“五一”预订高峰
“五一”假期临近,福州旅游市场迎来预订高峰。据携程数据显示,截至4月16日,“五一”假期福州酒店订单量同比去年增长12%,机
给近三年最好的10部刑侦剧排个名:《乌云之上》第8,《狂飙》第3
今年开年以来,国产剧算是和刑侦类型“杠”上了。刑侦剧一部接一部,几乎没有空窗期。要么是还原了曾经的真实悬案,要么是剧情高
北京11个上市基础设施公募REITs项目募集235亿元
  中新网北京4月1日电 (记者 吕少威)记者今天从北京市发改委获悉,北京市积极推进基础设施公募REITs工作,目前累计共有11个基
ipad怎么看运行内存苹果手机怎么看内存「ipad怎么看运行内存」
iPad查看运行内存教程在iPad上查看运行内存可以帮助你了解当前设备的使用情况,以及是否需要关闭一些应用程序以释放内存。以下是
兰州华为荣耀手机维修_华为手机维修西站店手机维修店「兰州华为荣耀手机维修_华为手机维修西站店」
搭载天玑1000+旗舰芯片,采用10亿色视网膜级超感屏,配备旗舰级5000万高清主摄等,诚意满满。今天我们小九主要来跟大家说说荣耀V40
十堰空调维修|十堰空调加氟|十堰空调维修电话0719-7017199
十堰空调维修中心【电话0719-7017199】主营:十堰空调维修,十堰空调加氟,服务好价格低,各区均有分点,专业十堰空调维修加氟人员随叫随到,欢迎咨询报修。
这群青年真提气!专注自己的事 就能干成事
  这群青年真提气!  4月15日,全球首个地月空间大尺度三星星座建成的消息公布。让人心头一热的,不只是117万公里星间链路打
斗破苍穹中丹塔未来三巨头会是谁?曹颖有望占据一席,宋清可捡漏
在斗破苍穹中,与魂殿齐名的丹塔,在斗气大陆上拥有非常高的地位,被所有炼药师视为圣地,有着无与伦比的号召力。丹塔外部的三位
手机的RAM和ROM分别指什么手机rom「手机的RAM和ROM分别指什么」
关于眼光和格局的诗句有:1、莫愁前路无知己,天下谁人不识君——唐代高适《别董大二首·其一》译文:不要担心前路茫茫没有知己
太阳能电磁阀嗡嗡响,太阳能上水时电磁阀一声巨响冒烟是怎么回事手机一直震动不停怎么回事「太阳能电磁阀嗡嗡响,太阳能上水时电磁阀一声巨响冒烟是怎么回事」
冒烟就很有可能是哪部分的短路烧坏了。可能是绝缘线也有可能是电磁阀的漆包线你说呢...为什么不要呢,太阳能真是太方便了。找到
相关文章