python爬虫个人小结
如题,直接上代码,代码中有部分注释。
对以文字为主的页面进行抓取
正则式的文章之前已经写过很多次了,别人的博客也介绍了很多,不再赘述。
#encoding:utf-8
import urllib.request as ur#代理服务器地址:http://www.xicidaili.com/
def use_proxy(proxy_addr, url):proxy = ur.ProxyHandler({'http':proxy_addr})opener = ur.build_opener(proxy, ur.HTTPHandler)ur.install_opener(opener)#设置超时data = ur.urlopen(url, timeout=30).read().decode('utf-8')return data
import urllib.error as uetry:#使用代理服务器的ip爬取,防止自己的ip地址在多次异常访问网站后被封禁proxy_addr = '121.196.218.197:3128'url = 'https://blog.csdn.net/rookie_wei'data = use_proxy(proxy_addr, url)#伪装爬虫,模拟浏览器访问
# req = ur.Request(url)
# header = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
# req.add_header("User-Agent", header)
# data = ur.urlopen(req).read()print(data)except ue.URLError as e:print('URL error', e.code, e.reason)
有两个问题需要注意:
第一,有些网页是动态刷新的,也就是说你正常爬只能爬到最前面的一部分。解决方法:一般这种网址都是由相同的主体部分构成,然后再加一下个性化的后缀形成一个完整的url。人工找出个性化后缀的规律,然后尝试用loop解决。
第二,有些网页不是utf8格式。解决方法:需要先解码然后转成utf8格式处理。
html1 = ur.urlopen(req, timeout=600).read()
html1 = str(html1.decode('gbk'))
对以图片为主的页面进行抓取
有三个问题需要注意:
第一,图片查重。如果重复图片是连续出现的(比如每一张图片都连续出现2次)。解决方法:注意同一张只爬一遍。大部分都是这种情况。混乱顺序的重复图片没办法查。
第二,url中不能带有中文。解决方法:尝试替换成相应的英文。或者,用urllib.request.quote()进行更高级的转换编码,见代码。
import string
url1 = 'https://image.baidu.com/search/index?tn=baiduimage&word=大学'
ur.quote(url1, safe=string.printable)
得到新的url:'https://image.baidu.com/search/index?tn=baiduimage&word=%E5%A4%A7%E5%AD%A6'
同理,可以使用unquote()进行反转码。
第三,找不到图片的链接。解决方法:需要人工尝试,寻找到每张图片url的规律。看起来很多图片的url十分复杂,但是大部分的参数(导致url不同的部分)是没有用的(至少对于打开图片没有帮助),可以忽略。找到真正区别不同图片的那几个参数,然后写loop就好了。
多线程爬取
多线程爬取更加快速。
import threadingclass A(threading.Thread):def __init__(self):threading.Thread.__init__(self)def run(self):for i in range(1000):print('我是线程A')class B(threading.Thread):def __init__(self):threading.Thread.__init__(self)def run(self):for i in range(1000):print('我是线程B')t1 = A()
t1.start()t2 = B()
t2.start()
参考博客:
- https://blog.csdn.net/rookie_wei/article/details/80768332
- https://blog.csdn.net/rookie_wei/article/details/80645873
python爬虫个人小结相关推荐
- 《Python爬虫开发与项目实战》——1.6 小结
本节书摘来自华章计算机<Python爬虫开发与项目实战>一书中的第1章,第1.6节,作者:范传辉著,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.6 小结 ...
- python3爬虫入门实例_10个python爬虫入门实例(小结)
昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...
- Python爬虫入门(爬取豆瓣电影信息小结)
Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...
- python入门爬虫案例_10个python爬虫入门实例(小结)
昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...
- python爬虫知乎点赞_Python爬虫爬取知乎小结
最近学习了一点网络爬虫,并实现了使用Python来爬取知乎的一些功能,这里做一个小的总结.网络爬虫是指通过一定的规则自动的从网上抓取一些信息的程序或脚本.我们知道机器学习和数据挖掘等都是从大量的数据出 ...
- Python爬虫小结(转)
一.爬虫介绍 爬虫调度端:启动.停止爬虫,监视爬虫运行情况 URL管理器:管理将要爬取的URL和已经爬取的URL 网页下载器:下载URL指定的网页,存储成字符串 网页解析器:提取有价值的数据,提取关联 ...
- Python爬虫-爬取知乎(小结)
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:小小科 ( 想要学习Python?Python学习交流 ...
- 玩转 Python 爬虫,需要先知道这些
作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 爬虫基本原理 1. URI 和 URL URI 的全称为 Uniform Resource Identifier,即统一资源标志 ...
- python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取
如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...
最新文章
- Flink在快手实时多维分析场景的应用
- 报表学习总结(一)——ASP.NET 水晶报表(Crystal Reports)的简单使用
- WM6.0系统WIFI与笔记本点对点互联详细解析
- 维密天使糖糖传授自拍秘籍,最满意自拍来自OPPO R11s
- 小米平板4刷recovery教程_小米4刷第三方recovery教程和方法
- 海康/大华/华为等摄像头或者录像机无法通过GB28181注册到国标平台LiveGBS的问题排查方法...
- css横排文字光影效果_css实现发光文字,以及一点点js特效
- 注塑机计算机控制器,注塑机微机控制器,Microprocessor-based Controller for PIM,音标,读音,翻译,英文例句,英语词典...
- 深圳人行推出企业信用报告网银查询渠道
- PHP版本美团闪购开放平台sdk
- [小说连载]张小庆,在路上(11)- 产品还是项目?
- 区间类动态规划(dp)
- 开源协议MIT、BSD、Apache
- QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问
- Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解
- 合理利用自制力,养成好的习惯
- SAP ABAP ALV 的一些总结:Docking container 和 Dialogbox container
- 使用容联云通讯实现手机验证码注册
- eclipse java插件下载,eclipse安装server插件_eclipse安装javaee - push博客
- 2020第十一届蓝桥杯C/C++ 省赛A组 题解
热门文章
- 中国公有云三巨头,同时支持Rancher Kubernetes平台
- 选择ButterKnife,告别findViewById
- FaaS如何在云2.0时代发挥优势,又将走向何方?
- atomic与nonatomic,assign,copy与retain的定义和区别
- net平台c#语言如何实现支付宝payto接口
- 【循序渐进学Python】1. Python基础知识
- 远程登录linux服务器的方式(telnet,ssh,ftp)
- 嵌入式linux webkit,嵌入式平台arm linux 之qt 4.5交叉编译到webkit时出错解决方法
- 几种常见窗函数及其MATLAB程序实现
- opencv-python视频处理之图片变成视频,视频切成图片