爬虫

什么是网络爬虫 又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以根据指定的规则,从互联网上下载网页、图片、视频等内容,并抽取其中的有用信息进行处理。网络爬虫的工作流程包括获取网页源代码、解析网页内容、存储数据等步骤。根据其目的和工作方式的不同,网络爬虫可以分为多种类型。常见的网络爬虫包括通用爬虫、聚焦爬虫、增量式爬虫等。 阅读详情

网络爬虫的基本工作流程
1.首先选取一部分精心挑选的种子URL
2.将这些URL放入待抓取的URL队列
3.从待抓取的URL队列中中抓取队列URL,解析DNS,并且得到主机IP,并将URL对于的网页下载下来,存储进已下载的网页库中,此外,将这些URL放进抓取的URL队列中。
4.分析已抓取的URL队列中的URL,从已下载的网页数据中分析出其他URL,并和已URL进行去重对比。最后将去过重的URL放入待抓取的URL队列中,从而进入下一个循环。

HTTP请求的Python实现
使用urllib2/urllib
用urllib2的urlopen函数见下列代码(GET请求)
import urllib2
response=urllib2.urlopen("http://www.zhifu.com")#响应对象,此方法有二个步骤,请求和响应,相当于下面二行代码
#请求request=urllib2.Request('http://www.zhifu.com')
#响应request=urllib2.Request(request)
help(response)#查看response对象帮助文档
print(response.getcode())#查看response.getcode()返回响应的状态码
print(response.geturl())#查看返回请求的URL
a=response.info()#返回httplib.HTTPMessage对象
help(a)#获取a的帮助文档
print('a.getencoding()',a.getencoding())#编码方式‘7bit'
print(a['Date'])#a对象可以象字典一样使用
print('a.getplist()',a.getplist())#返回一个列表
print('a.parsetype()',a.parsetype())
print('a is',type(a))
#a是httplib.HTTPMessage对象,可以通过字典方法dict[key]以下是key的取值(这里好像是http请求头的一些信息)
# Date: Fri, 14 Sep 2018 02:05:37 GMT
# Server: NOYB
# X-Frame-Options: SAMEORIGIN
# Last-Modified: Wed, 10 May 2017 22:23:20 GMT
# ETag: "64c-54f32eb686600"
# Accept-Ranges: bytes
# Content-Length: 1612
# X-XSS-Protection: 1; mode=block
# X-Content-Type-Options: nosniff
# Content-Security-Policy:      script-src 'self'
# Cache-Control: no-cache
# Pragma: no-cache
# Keep-Alive: timeout=15, max=96
# Connection: Keep-Alive
# Content-Type: text/html; charset=UTF-8
print(response.info())
help(response)
html=response.read()#读取响应
print html

post请求
请求头的User-Agent域和Referer域的含义

Referer域:它表示一个来源,列如Referer=http://www.google.com(详细见https://www.sojson.com/blog/58.html)
作用可以来防盗链
作用:
   1.防盗链。
   刚刚前面有提到一个小 Demo  。
   我在www.sojson.com里有一个www.baidu.com链接,那么点击这个www.baidu.com,它的header信息里就有:
   Referer=http://www.sojson.com
   那么可以利用这个来防止盗链了,比如我只允许我自己的网站访问我自己的图片服务器,那我的域名是www.sojson.com,
   那么图片服务器每次取到Referer来判断一下是不是我自己的域名www.sojson.com,如果是就继续访问,不是就拦截。
   这是不是就达到防盗链的效果了?
   2.防止恶意请求。
   比如我的SOJSON网站上,静态请求是*.html结尾的,动态请求是*.shtml,那么由此可以这么用,所有的*.shtml请求,必须 Referer  为我自己的网站。
   Referer=http://www.sojson.com
   空Referer是怎么回事?什么情况下会出现Referer?
   首先,我们对空 Referer  的定义为, Referer  头部的内容为空,或者,一个 HTTP  请求中根本不包含 Referer  头部。
   那么什么时候 HTTP  请求会不包含 Referer  字段呢?根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。
   比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer  字段的,因为这是一个“凭空产生”的 HTTP  请求,并不是从一个地方链接过去的。
   那么在防盗链设置中,允许空Referer和不允许空Referer有什么区别?
   允许 Referer  为空,意味着你允许比如浏览器直接访问,就是空。

 User-Agent:表示访问的对象,如浏览器,python客服端等等

 使用python设置请求头:
 http的请求格式:
  POST /search HTTP/1.1  #请求行
  Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel #请求头
 Referer: <a href="http://www.google.cn/">http://www.google.cn/</a>  
 Accept-Language: zh-cn  
 Accept-Encoding: gzip, deflate  
 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)  
 Host: <a href="http://www.google.cn">www.google.cn</a>  
 Connection: Keep-Alive  
 Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; #请求头

hl=zh-CN&source=hp&q=domety#请求体

 urllib2.Request是一个类,可以使用这类来设置请求的URL,请求头,请求体,并得体请求体如下
 #初始化方法参数如下
 class Request:
    def __init__(self, url, data=None, headers={},
                 origin_req_host=None, unverifiable=False)

url:访问的地址
data:应该是请求体里的data,列如postdata={'username':'zhang','possword':1234},这个请求体要使用data=urllib.urlencode(postdata)转换格式
headers:请求里的headers,直接设置headers={'User-Agent':user_agent,'Referer':'http://www.baidu'}

将得到的请求体传入urllib2.urlopen中得到我们需要的响应

response=urllib2.urlopen(request)
下面方法也可添加使用Request对象的add_header和add_data方法
import urllib
import urllib2
url="http://xxxx"
user_agent="xx"
referer="xx"
postdata={xx:xx,xx:xx}
data=urllib.urlencode(postdata)
req.add_header("User-Agent",user_agent)
req.add_data(data)

header中需要注意的:
User-Agent
Conten-Type:在使用REST接口时,服务器会检查改值,用来确定HTTP Body中的内容解析。
取值有:applicaation/xml(在XML RPC如RESTful/SOAP调用时)
       application/json(在JSON RPC调用时使用)
       application/x-www-form-urlencodeed(在浏览器提交表单时使用)
Referer:服务器有时候会检查防盗链

Cookie处理
得到Cookie值
import urllib2
import cookielib
cookie=cookielib.CookieJar()#使用这个来得到cookie
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response=opener.open('http://www.zhihu.com')
for item in cookie:
    print item.name+':'+item.value

设置cookle值
import urllib2
opener=urllib2.build_opener()
opener.addheaders.append(("Cookie",'email='+"xxxx@163.com"))#验证后设置不成功
req=urllib2.Request("http://www.zhihu.com/")
response=opener.open(req)
print(response.headers)


Timeout设置超时

import urllib2
request=urllib2.Request('http://www.zhihu.com')
response=urllib2.urlopen(request,timeout=2)
html=respose.read()
print html

获取HTTP响应码
import urllib2
try:
   respose=urllib2.urlopen("http://www.goodle.com")
except urllib2.THHPError as e:
       if hasattr(e,'code'):
          print 'error code',e.code# 打印错误的码

重定向


urllib2默认情况下会针对HTTP 3XX返回码自动进行重定向动作。检测是否发生了重定向动作。判断是否发生重定向只需要对比一下请求的url和响应的url,
检测url
import urllib2
response=urllib2.urlopen('http://zhihu.cn')
isRedirected=respose.geturl()=='http://zhihu.cn'

如果不想重定向,可以自定义HTTPRedirectHandler,如下:
import urllib2
class RedirectHandler(urllib2.HTTPRedirectHandler):
    def http_error_301(self, req, fp, code, msg, headers):
        pass
    def http_error_302(self, req, fp, code, msg, headers):
        result=urllib2.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, headers)
        result.status=code
        result.newurl=result.geturl()
        return result
opener=urllib2.build_opener(RedirectHandler)
opener.open('http://www.zhihu.cn')

proxy代理设置


import urllib2
proxy=urllib2.ProxyHandler({"http":"127.0.0.1:8087"})
opener=urllib2.build_opener([prox,])
urllib2.install_opener(opener)#使用这个会设置全局opener,所有的HTTP访问都会使用这个代理
response=urllib2.urlopen('http://www.zhihu.com')
print response.read()

如果不需要只使用这个代理
import urllib2
proxy=urllib2.ProxyHandler({"http":"127.0.0.1:8087"})
opener=urllib2.build_opener([prox,])
response=opener.open('http://www.zhihu.com')
print response.read()

 

什么是网络爬虫?有什么用?怎么爬? 随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要。互联网中的数据是海量的,如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。如果只是做搜索引擎,那么感兴趣的信息就是互联网中尽可能多的高质量网页;如果要获取某一垂直领域的数据或者有明确的检索需求,那么感兴趣的信息就是根据我们的检索和需求所定位的这些信息,此时,需要过滤掉一些无用信息。前者我们称为通用网络爬虫,后者我们称为聚焦网络爬虫。 阅读详情

相关推荐

网络爬虫之必备知识

摘要:本文主要理清网络爬虫的概念,简要讲解爬虫的必备知识,分为python基础、字符编码、http头信息、http状态码、html基础、爬虫职业道德。内容浅显,主要理一理相关知识。一、网络爬虫的概念   网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 通俗的说,我们写爬虫的目的就是自动从不同的网页上提取海量的数据。以下是我之前爬取的部分数据

CaiNiaoWuZui的专栏 5860

内容安全策略CSP(Content-Security-Policy)

内容安全策略CSP(Content-Security-Policy) :https://blog.youkuaiyun.com/u014465934/article/details/84199171

menghuanzhiming的博客 1454

爬虫基础(1)什么是网络爬虫

文章目录一. 认识网络爬虫二. 网络爬虫的组成三. 网络爬虫的类型1. 通用网络爬虫2. 聚焦网络爬虫3. 增量式网络爬虫4. 深层网络爬虫(1)静态网页(2)深层页面和表层页面(3)网络爬虫表单填写四. 网络爬虫的用途 一. 认识网络爬虫 说起网络爬虫,人们常常会用这样一个比喻:如果把互联网比喻成一张网,那么网络爬虫就可以认为是一个在网上爬来爬去的小虫子,它通过网页的链接地址来寻找网页,通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地

Python达人 2841

“Content-Security-Policy”头缺失或不安全

中间件为IIS,网站根目录下找到“web.cofig”文件,没有则新建该文件。复制以下代码,粘贴到web.cofig文件中(新建全部复制,已有复制system.webserver) <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpProtoc...

(ง •_•)ง 1万+

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 296

矢量网络分析仪(矢网)组成和原理简介

一、概述 矢量网络分析仪是一种常见的射频测量仪器,主要用来测量高频器件、电路及系统的性能参数,如线性参数、非线性参数、变频参数等。 1.1 分类 矢量网络分析仪一般以频率来划分,截止频率越高,价格也越贵; 根据测试端口的数量可分为:双端口、 3 端口、 4 端口、 6 端口; 常见的厂家有:美国的安捷伦( Agilent)、德国的罗德与施瓦茨( R&S) , 国内的有南京普纳和中电 41 所。 1.2 常用功能 常用的测试器件有:功分器、合路器、滤波器、衰减器、天线、电缆、放大器、混频器、双工器、耦

大音希声 5万+

chrome开发总结(交互/权限/存储)-爬虫

目录 chrome开发总结(交互/权限/存储)-爬虫 1.chrome-配置文件 2. chrome-js简介 3. chrome-交互 chrome开发总结(交互/权限/存储)-爬虫 标签(空格分隔): 杂乱之地 经过一翻折腾。还是选择了chro...

weixin_30270561的博客 261

APB Timer验证环境搭建——学习笔记(6)

(1)为RELOAD VALUE配置初始值32'h8000_0000,设定边界值32'h4000_0000,可以看到减到想要的边界值的时候,counter重新加载RELOAD VALUE,重新开始计数;这根线,统计等待到中断的次数,与理论值做。(2)设定Reload value。(1)由于counter。recount总共次数;

qq_41651535的博客 497

网络爬虫【简介】

网络爬虫的简介和浏览器分析工具

2401_88885149的博客 1万+

单细胞转录组分析(scRNA-seq)

单细胞转录组测序(Single-cell RNA sequencing,scRNA-seq)是一种高通量测序技术,可以在单细胞水平解析基因表达情况,揭示细胞异质性,探索稀有细胞类型,并研究细胞状态转换及动态调控机制。与传统的。

大甘的博客 6149

tiktok算法协议研究

经过上述分析,可以确定目标字符串来源于一段 JSON 数据,而这段 JSON 数据来自于一个经过加密的本地文件。对字符串 "sdi_v2" 进行 SHA-1 计算,得到 20 字节的结果;将第一步得到的数据进行MD5计算,生成16字节的结果;将第二步的结果转换为十六进制字符串,从而得到 32 字节的密钥。写这种算法分析的帖子真的是太无聊了,就先分析到这里吧,后续有机会再来谈下被加密的本地文件是怎么来的!!自我感觉TT的算法并不难,就是量太大了,所以我想问问有没有感兴趣的朋友来一起分析,欢迎联系。

2503_90751938的博客 2580

网络爬虫是什么?怎么学python爬虫

网络爬虫又称网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。

Itmastergo的博客 3万+

大模型蒸馏实战:让小模型获得大模型的知识

本文为初学者提供了一份大模型蒸馏实战指南,通过情感分析任务演示如何将 BERT 的知识迁移到轻量级 TextCNN。文章结合原理图解与 PyTorch 代码,详解软标签生成、温度调节和双损失设计等核心概念,并对比蒸馏前后的性能差异(准确率提升 4.6%,推理速度达 1200 句 / 秒)。内含可直接运行的代码片段、训练技巧及常见问题解答,助力开发者快速掌握模型压缩核心技术,实现工业级部署效率。适合 NLP 入门者学习实践。

1369

终于有人把网络爬虫讲明白了

摘要:Python网络爬虫的详尽解释。导读:网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果...

苏克的博客 4342

Microduck机器鸭开源AI项目:本地部署与模型微调实战指南

开源AI模型的本地化部署与定制化训练正成为开发者关注的技术趋势。与依赖云端API的在线服务不同,本地部署允许用户将模型权重下载至自有GPU环境,通过命令行或WebUI完成推理、批量任务处理及API集成,在数据隐私、离线使用和接口稳定性方面具备天然优势。模型微调则基于预训练权重,利用领域数据训练特定任务,从而提升生成质量与业务适配度。这一技术路径广泛应用于内容生成、智能对话、自动标注等场景,尤其适合消费级显卡开发者、数据敏感型团队及二次开发研究者。Microduck(机器鸭)作为近期预售火爆的开源项目,围绕“

weixin_29082143的博客 414

第四章:无感FOC的平滑启动艺术:告别“咔哒”声与抖动

无感FOC启动技术面临"先有位置还是先有旋转"的核心矛盾,导致常见故障包括位置失准、负载突变等。基础方案采用开环I/F控制,但存在重载启动困难等局限性。进阶方案结合IPD位置检测技术,通过脉冲电压注入法精准定位转子初始位置。关键技术在于开环到闭环的平滑切换,采用混合观测器设计和相位对齐技术。量产优化包括自适应参数整定和故障恢复机制,确保启动可靠性和一致性。该系统工程方案可有效解决启动抖动、异响等问题,提升用户体验。

汽车软件开发 738

网络爬虫是什么

作为一家大数据公司的运营小编,经常会有人问我“诶?你说的爬虫是什么呀”“爬虫的用途是什么呀?”“你们公司是卖爬虫的吗,有蜥蜴吗?”等一系列问题,面对这些问题,小编是绝望的。那么爬虫到底是什么呢? 一、爬虫是什么 以下是百度百科上对于网络爬虫的定义: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或

u011231755的博客 5万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

网络爬虫解析

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以用于从网站提取数据,例如监测社交媒体平台上的活动,或者从网上收集新闻和文章。它们也可以用于搜索引擎,如Google和Bing,来抓取和索引网页,以便在用户进行搜索时提供结果。URL通常由多个部分组成,包括协议类型(如HTTP、HTTPS)、主机名(域名或IP地址)、路径(资源在主机上的位置)以及可选的查询参数(用于传递额外的信息)。通过URL,用户可以方便地访问和定位到特定的网络资源。

2301_82032652的博客 2634

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

什么是网络爬虫?有什么用?怎么爬?终于有人讲明白了

【导读】网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。 此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测...

python学习者的博客 3万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

网络爬虫技术

本文介绍了网络爬虫的基础概念与应用。主要内容包括:1)爬虫定义与分类,分为通用、聚焦、增量式和深层网络爬虫四种类型;2)核心工作原理,涉及HTTP请求过程、响应结构和网页基础;3)常见爬取策略如宽度优先(BFS)和深度优先(DFS)遍历;4)Python中Requests库的使用方法,包括请求发送、响应处理和异常捕获。文章通过百度网页爬取实例,展示了网络爬虫从发送请求到获取响应的完整流程,为初学者提供了网络数据采集的基础知识框架。

2302_78993464的博客 2958

网络爬虫的定义是什么?

网络爬虫的定义是什么?网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。网络爬虫在我们的生活中扮演怎样的角色?在数字化时代,信息如同潮水般汹涌而来。过去,我们可能依赖书籍、报纸或电视来获取信息,但这些渠道的信息量有限,而且筛选过的信息未必能满足我们的需求。如今,互联网为我们提供了海量的信息,但同时也带来了“信息过载”的问题。

logic1001的博客 2345

网络爬虫详解

网络爬虫(web crawler,又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 产生背景 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南

顺其自然~专栏 9168

网络爬虫学习

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。类型:网络爬虫按照系统结构和实现技术,大致可以分为以下几种:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Incremental Web Crawler)、深层网络爬虫(Deep Web Crawler)。

2303_77635734的博客 2466
上一篇: git命令管理
下一篇: handle处理器和自定义opener
qq_15551663
博客等级 码龄12年 4粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值