前言
网络爬虫也称为网络蜘蛛、网络机器人,抓取网络的数据。其实就是用Python程序模仿人点击浏览器并访问网站,而且模仿的越逼真越好。一般爬取数据的目的主要是用来做数据分析,或者公司项目做数据测试,公司业务所需数据。
而数据来源可以来自于公司内部数据,第三方平台购买的数据,还可以通过网络爬虫爬取数据。python在网络爬虫方向上有着成熟的请求、解析模块,以及强大的Scrapy网络爬虫框架。
爬虫分类
1、通用网络爬虫:搜索引擎使用,遵守robots协议(君子协议)
robots协议 :网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。https://www.taobao.com/robots.txt
2、聚焦网络爬虫 :自己写的爬虫程序
爬虫爬取数据步骤
- 确定需要爬取的URL地址
- 由请求模块向URL地址发出请求,并得到网站的响应
- 从响应内容中提取所需数据
- 所需数据,保存
- 页面中有其他需要继续跟进的URL地址,继续第2步去发请求,如此循环
请求模块
from urllib import request
request.urlopen() 向网站发起请求并获取响应对象
参数:
URL:需要爬取的URL地址
timeout: 设置等待超时时间,指定时间内未得到响应抛出超时异常
响应对象(response)方法
- string = response.read().decode('utf-8') 获取响应对象内容(网页源代码),返回内容为字节串bytes类型,顺便需要decode转换成string。
- url = response.geturl() 返回实际数据的URL地址
- code = response.getcode() 返回HTTP响应码
from urllib import request url = 'http://www.baidu.com/' # 向百度发请求,得到响应对象 response = request.urlopen(url) # 返回网页源代码 print(response.read().decode('utf-8')) # 返回http响应码 print(response.getcode()) # 200 # 返回实际数据URL地址 print(response.geturl()) # http://www.baidu.com/
urllib.request.Request() 创建请求对象(包装请求,重构User-Agent,使程序更像正常人类请求)
参数
URL:请求的URL地址
headers:添加请求头(爬虫和反爬虫斗争的第一步)
使用流程
1、创建请求对象(重构User-Agent)
req = urllib.request.Request(url=url,headers={'User-Agent':'Mozilla/5.0 xxxx'})
2、请求对象发起请求,获取响应对象(urlopen)
res = urllib.request.urlopen(req)
3、通过相应对象获取响应内容
html = res.read().decode('utf-8')
from urllib import request url = 'http://httpbin.org/get' headers = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'} # 创建请求对象(包装请求) req = request.Request(url=url,headers=headers) # 发请求,获取响应对象 res = request.urlopen(req) # 读取内容,返回网页代码 html = res.read().decode('utf-8') print(html)
URL地址编码
urllib.parse.urlencode({dict})
URL地址中一个查询参数
查询参数:{'wd' : '美女'}
urlencode编码后:'wd=%e7%be%8e%e5%a5%b3'
from urllib import parse url = 'http://www.baidu.com/s"htmlcode">from urllib import parse query_string_dict = {'wd' : '美女', 'pn' : '50'} query_string = parse.urlencode(query_string_dict) url = 'http://www.baidu.com/s"htmlcode">from urllib import request from urllib import parse # 定义常用变量 word = input('请输入搜索内容:') url = 'http://www.baidu.com/s"htmlcode">from urllib import parse parse.quote('美女') # %E7%BE%8E%E5%A5%B3urllib.parse.unquote(string)解码
from urllib import parse result = parse.unquote('%E7%BE%8E%E5%A5%B3') print(result) # 美女百度贴吧网页获取
- 输入贴吧名称
- 输入起始页
- 输入终止页
- 保存到本地文件:第1页.html、第2页.html ...
实现步骤
1、找URL规律
1、不同吧
2、不同页
第1页:http://tieba.baidu.com/f"htmlcode">
from urllib import request,parse import time import random class BaiduSpider(object): def __init__(self): self.url = 'http://tieba.baidu.com/f?kw={}&pn={}' self.headers = {'User-Agent':'Mozilla/5.0'} # 获取响应 def get_page(self,url): req = request.Request(url=url,headers=self.headers) res = request.urlopen(req) html = res.read().decode('utf-8') return html # 保存数据 def write_page(self,filename,html): with open(filename,'w') as f: f.write(html) # 主函数 def main(self): name = input('请输入贴吧名:') start = int(input('请输入起始页:')) end = int(input('请输入终止页:')) # 拼接URL地址,发请求 for page in range(start,end+1): pn = (page-1)*50 kw = parse.quote(name) # url编码 url = self.url.format(kw,pn) html = self.get_page(url) # 获取响应,并保存 filename = '{}-第{}页.html'.format(name,page) self.write_page(filename,html) print('第{}页爬取成功'.format(page)) # 提示进度 time.sleep(random.randint(1,3)) # 控制爬取速度 if __name__ == '__main__': spider = BaiduSpider() spider.main()以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
神剑山庄资源网 Design By www.hcban.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 谭艳《遗憾DSD》2023 [WAV+CUE][1G]
- Beyond2024《真的见证》头版限量编号MQA-UHQCD[WAV+CUE]
- 瑞鸣唱片2024-《荒城之月》SACD传统民谣[ISO]
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]