爬虫解码~以及我的一些小经验

爬虫-真正意义上来说   只要是个有数据的网站都可以爬   , 没有爬不了的东西

今天我就分享一下一些在爬虫过程中可以用到的一些诀窍

首先解码问题

我们获取网站的时候 一般用content.decode("utf-8")  ,可是有时候当我们把网站的

内容保存到html文件的时候文件里面没有数据  ,这个问题可以用两种方法解决

第一, 我们要在文件写入的时候 在with open 里写第三个参数 encoding=‘utf-8’

第二种解决方案是直接获取网站数据 的时候写 比如变量名是r ,r.content.decode("utf-8").encode(‘gbk‘,‘ignore‘),就是忽略

这里面还有一个很实用的东西  就是 断点   exit[-1]  ,它可以终止正在运行的程序

当我们爬取的数据有瑕疵的时候可以替换调,用链式调用   比如   a.replace(‘‘,‘‘).replace

这样很方便    也可以用正则来提取那些你想要的数据 比如  regex = re.compile(‘要匹配的东西‘)

print(regex.findall(这里面是要写要从哪里匹配的文件)[0]) ,0参数可以把套在外边的列表给整没了

#下视频和图片意义都差不多,格式都差不了多少

下视频的时候 :

with open(‘文件名‘,‘ab’) as f :

f.write(a.content)

with open 的第二个参数必须是ab是追加的意思   ,不写参数的话默认为r 参数

下图片的时候

with open(‘文件名‘,‘wb’) as f :

f.write(a.content)

wb参数就是二进制的方法来打开   没有的话创建

不过爬虫技术里最重要的就是正则匹配 , 没有东西是正则匹配不出来的,而xpath范围很小

跟花拳绣腿差不多

在爬虫的世界里什么数据都可以爬  , 要是你不能爬的话那只能证明你的技术不到位

所以爬任何一个网站都不能放弃  , 坚持就是胜利 , 加油!!

原文地址:https://www.cnblogs.com/weifeng-888/p/10479483.html

时间: 2024-08-06 20:33:43

爬虫解码~以及我的一些小经验的相关文章

OC开发学习过程中的一些小经验

1.引入头文件以及框架 :  @import   XXXX         XXXX表示需要引入的文件/框架2.头文件引用循环:两个头文件相互包含时,将其中一个头文件的类用@class引入3.设置边角幅度 :[  XX.layer setCornerRadius:100 ]  ;    XX表示需要设置边角的对象,一般是给按钮设置,边角幅度大小跟最后数字取值关联.4.多个引号处理方法:引号前加\,如果还有括号影响,就再单独用@“ “将其框起来..专业术语叫转义字符.. 5.在UIWebview中

新产品为了效果,做的比较炫,用了很多的图片和JS,所以前端的性能是很大的问题,分篇记录前端性能优化的一些小经验。

第一篇:HTTP服务器 因tomcat处理静态资源的速度比较慢,所以首先想到的就是把所有静态资源(JS,CSS,image,swf) 提到单独的服务器,用更加快速的HTTP服务器,这里选择了nginx了,nginx相比apache,更加轻量级, 配置更加简单,而且nginx不仅仅是高性能的HTTP服务器,还是高性能的反向代理服务器. 目前很多大型网站都使用了nginx,新浪.网易.QQ等都使用了nginx,说明nginx的稳定性和性能还是非常不错的. 1. nginx 安装(linux) htt

Java游戏编程的几个小经验

1.输出图片,最直接的方式是 Image img = Toolkit.getDefaultToolkit().getImage("images/cheer1.jpg"); graphics.drawImage(img, 0, 0, 500, 500, null); 注意:路径是相对于工程根目录的,不是相对于src的 2.深刻理解 repaint()  update()   paint() 三者之间的关系 每一次输出图片,都要先重新获得一次画笔graphics,(通过getGraphic

Android小经验

转载自:http://mp.weixin.qq.com/s?__biz=MzA4MjU5NTY0NA==&mid=404388098&idx=1&sn=8bbbba7692dca68cdda2212dec4d86c0&scene=21#wechat_redirect 今天是冯建同学投稿.总结他在Android开发方面的各种小经验,我认为很有意义,所谓经验丰富有时候是指积累的这些小经验许多,他这篇分享相信会帮助到一些朋友.我也曾推荐过他的 APK魔鬼瘦身 一文.没看过的朋友也

小经验

1.设置tableview返回时取消选中状态 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableview deselectRowAtIndexPath:self.tableview.indexPathForSelectedRow animated:YES]; } 2.设置UIPickerView默认选中 [pickerView selectRow:5 inComponent:0 

开发中各种小经验或技巧

1.js.jsp种判断list长度 js  :  list.length jsp: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>            list的长度是:${fn:le

那些小经验

(1) A. ? 1 2 3 4 <input type="radio" name="bank"> <label>       <img src="..." alt=""> </label> input和lable自然对齐,label高度显然没有包裹img,如果给img设置vertical-align:middle.则label就会在img垂直中心,input和lable本来就会

关于achartengine的使用一些小经验

最近项目上要使用图表,便开始在网上找各种图表架包,好看的都是收费的,最后还是决定用google的achartengine.achartengine使用起来还算好,就是修改样式很烦.下面就分享下开发经验吧.所有的chart都分两块,一块是Renderer(如XYMultipleSeriesRenderer,我的理解是,这个renderer为视图render的模板,就是你想用什么图标,一个图图表基本分2层,这个是最下面一层),一块是Dataset(如XYMultipleSeriesDataset,用

Android开发的16条小经验总结

Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助. 1. TextView中的getTextSize返回值是以像素(px)为单位的, 而setTextSize()是以sp为单位的. 所以如果直接用返回的值来设置会出错,解决办法是用setTextSize()的另外一种形式,可以指定单位: setTextSize(int unit, int size)    TypedValue.COMPLEX_UNIT_PX : Pixels    TypedValue.COMP