基于python的爬虫(一)
抓取网页
python核心库
urllib2
实现对静态网页的抓取,不得不说,“人生苦短,我用python”这句话还是有道理的,要是用java来写,这估计得20行代码
(对不住了博客园了,就拿你开刀吧)
def staticFetch():
url = "http://www.cnblogs.com/"
request = urllib2.Request(url)
response = urllib2.urlopen(request)
print response.read()
实现对动态网页的抓取,采用post请求,如果想用get方法,只需要把参数接在url后面,不需要data这个参数
def postFetch():
data = 'Keywords:爬虫'
url = "http://zzk.cnblogs.com/s/blogpost?Keywords=%E7%88%AC%E8%99%AB"
request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
print response.read()
匹配数据
正则表达式 |
解释 |
案例(伪代码) |
.* |
贪婪模式,匹配除了换行符之外的所有字符 |
str = abcbc regex = a.*c return abcbc |
.*? |
非贪婪模式 |
str = abcbc regex = a.*c return abc |
(.*?) |
表示只要匹配这一部分 如果是匹配多个则返回的是一个元组类型 |
str = abcbc regex = a(.*)c return b |
more |
伪造浏览器请求
urllib2.HTTPError: HTTP Error 403: Forbidden
当你在运行python的时候出现这个错误,则该网址设置过了禁止爬虫访问,需要伪装一下http的请求头,加入如下代码再运行就ok了。
head={'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
urllib2.Request(url,headers=head)
网页乱码问题
看看爬下来的html是什么编码格式的
一般都是utf-8,也有gb2312和asic的,保证你的编码和网页的编码是同一种编码。
中文乱码
如果爬下来的网页打印的时候出现\xe6\x96\xb0\xe4\xba\xba这种信息,你可以用以下语句转换成字符串查看
','.join(str)
参考资料
//一个python爬虫从入门到放弃的好博客
http://cuiqingcai.com/1052.html
基于python的爬虫(一)的更多相关文章
- 基于python的爬虫项目
一.项目简介 1.1 项目博客地址 https://www.cnblogs.com/xsfa/p/12083913.html 1.2 项目完成的功能与特色 爬虫和拥有三个可视化数据分析 1.3 项目采 ...
- 基于python的爬虫流程图(精简版)
网址: https://www.processon.com/view/link/5e1148b8e4b07db4cfa9cf34 如果链接失效,请及时反馈(在评论区评论),博主会及时更新
- 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
[一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...
- 基于python的知乎开源爬虫 zhihu_oauth使用介绍
今天在无意之中发现了一个知乎的开源爬虫,是基于Python的,名字叫zhihu_oauth,看了一下在github上面star数还挺多的,貌似文档也挺详细的,于是就稍微研究了一下.发现果然很好用啊.就 ...
- 基于Scrapy框架的Python新闻爬虫
概述 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地 详细 代码下载:http://www.demoda ...
- 基于python的知乎开源爬虫 zhihu
今天在无意之中发现了一个知乎的开源爬虫,是基于Python的,名字叫zhihu_oauth,看了一下在github上面star数还挺多的,貌似文档也挺详细的,于是就稍微研究了一下.发现果然很好用啊.就 ...
- Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站
Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...
- 基于python爬虫的github-exploitdb漏洞库监控与下载
基于python爬虫的github-exploitdb漏洞库监控与下载 offensive.py(爬取项目历史更新内容) #!/usr/bin/env python # -*- coding:utf- ...
- 基于python的pixiv爬虫
基于python的pixiv爬虫 1.目标 在和朋友吹逼过程中,聊到qq群机器人,突发奇想动手做一个p站每日推荐色图的色图机,遂学习爬虫. 目标: 批量下载首页推荐色图. 由于对qq机器人不熟,先利用 ...
随机推荐
- Think In Java_读书笔记_042516
面向对象程序设计方式: 1, 万物皆对象. 2,程序是对象的集合,他们通过发送消息来告知彼此所要做的.(个人理解,比如你调用方法的时候需要去调用某个对象的某个方法,必须传相应的参数,这些参数列表就相当 ...
- Oracle ASM数据库故障数据恢复过程
一.故障描述 ASM磁盘组掉线 ,ASM实例不能mount.ASM磁盘组有4个500G的磁盘组成,数据库和ASM软件为10.2.0.1,急需恢复oracle数据库.二.故障分析 分析组成ASM磁盘 ...
- 老李分享:loadrunne动态查询db2数据库
老李分享:loadrunne动态查询db2数据库 poptest老李认为性能测试脚本开发不仅仅涉及到脚本开发的技术层面,同时也要对一些其他技术有所了解动态链接库的技术,线程安全等等,建议在做下面的 ...
- span表情输入框 --- Author: rose && lvyerose@163.com
像QQ等社交聊天中,不可或缺的一部分就是我们常用的表情输入了,有时候有趣的表情同样能吸引住用户达到用户常驻的效果,当然,我们开发的时候不用去研究如何才能做到有趣,如何才能做到足够吸引用户,我们 ...
- Android中java层使用LocalSocket和底层进行通讯
原始文件:frameworks\base\services\java\com\android\server\NativeDaemonConnector.java private void listen ...
- Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 常用软件安装+系统软件卸载:http://www.cnblogs.com/du ...
- js的apply()与call()的区别
1.各自对应的不同的语法: /*apply()方法*/ function.apply(thisObj[, argArray]) /*call()方法*/ function.call(thisObj[, ...
- 图解函数重载以及arguments
- Python多层目录模块调用
一. 引用模块在 父+级目录中: 1. 将导入模块所在目录(../model/模块)添加到系统环境变量path下,可添加多个 import syssys.path.append("../mo ...
- ThreadLocal学习笔记
首先,ThreadLocal是Java语言提供的用于支持线程局部变量的标准实现类.很多时候,ThreadLocal与Synchronized在功能上有一定的共性,都可以用来解决多线程环境下线程安全问题 ...