以前在学校做科研都是直接利用网上共享的一些数据 , 就像我们经常说的dataset、beachmark等等 。但是 , 对于实际的工业需求来说 , 爬取网络的数据是必须的并且是首要的 。最近在国内一家互联网公司实习 , 我的mentor交给我的第一件事就是去网络上爬取数据 , 并对爬取的数据进行相关的分析和解析 。
回到顶部
1.利用urllib2对指定的URL抓取网页内容
网络爬虫(Web Spider) , 顾名思义就是将庞大的互联网看做是一张大网 , 而我们要做的就是用代码去构造一个类似于爬虫的实体 , 在这张大网上爬取我们需要的数据 。
所谓网页抓取 , 就是把URL地址中指定的网络资源从网络流中读取出来 , 保存到本地 。类似于使用程序模拟IE浏览器的功能 , 把URL作为HTTP请求的内容发送到服务器端 , 然后读取服务器端的响应资源 。Python中提供了专门抓取网络的组件urllib和urllib2 。
最简单的抓取网络的Python代码 , 四行就可以搞定:
1 import urllib2 2 response = urllib2.urlopen('http://www.toutiao.com/') 3 html = response.read() 4 print html私信小编01 领取完整项目代码!
显示抓取的结果:
文章插图
我们可以打开百度主页 , 右击 , 选择查看源代码(火狐OR谷歌浏览器均可) , 会发现也是完全一样的内容 。也就是说 , 上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来 。这就是一个最简单的利用urllib2进行网页爬取的例子 。
当然 , 有的网站为了防止爬虫 , 可能会拒绝爬虫的请求 , 这就需要我们来修改http中的Header项了 。还有一些站点有所谓的反盗链设置 , 其实说穿了很简单 , 就是检查你发送请求的header里面 , referer站点是不是他自己 , 所以我们只需要像把headers的referer改成该网站即可 。有关Header项的修改请转至下边的链接查看 , 里边详细地介绍了Header的修改、Cookie和表单的处理 , 等等 。
1)urllib2的使用细节和抓站技巧
2)用Python爬虫抓站的一些技巧总结
3)用python写爬虫 , 去爬csdn的内容,完美解决 403 Forbidden
4)用Python爬取网页或下载文档的登陆问题
5)用python2和python3伪装浏览器爬取网页
6)Python专题教程:抓取网站 , 模拟登陆 , 抓取动态网页
回到顶部
2. 使用正则表达式过滤抓取到的网页信息
如果说网页爬虫爬取的网页信息是数据大海的话 , 那么正则表达式就是我们进行“大海捞针”的工具 。
首先声明一点 , 正则表达式不是Python的语法 , 并不属于Python , 其他的语言中也同样支持正则表达式的使用 。具体来说 , 它是一种强大的字符串匹配和处理规则 。
回到顶部
2.1 正则表达式介绍
下图展示了使用正则表达式进行匹配的流程:
文章插图
下图列出了Python支持的正则表达式元字符和语法:
2.1.1 正则表达式元字符
文章插图
2.1.2 数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串 。贪婪模式 , 总是尝试匹配尽可能多的字符;非贪婪模式则相反 , 总是尝试匹配尽可能少的字符 。Python里数量词默认是贪婪的 。
例如:正则表达式"ab*"如果用于查找"abbbc" , 将找到"abbb" 。而如果使用非贪婪的数量词"ab*?" , 将找到"a" 。
2.1.3 反斜杠的问题
与大多数编程语言相同 , 正则表达式里使用""作为转义字符 , 这就可能造成反斜杠困扰 。假如你需要匹配文本中的字符"" , 那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":第一个和第三个用于在编程语言里将第二个和第四个转义成反斜杠 , 转换成两个反斜杠\后再在正则表达式里转义成一个反斜杠用来匹配反斜杠 。这样显然是非常麻烦的 。
Python里的原生字符串很好地解决了这个问题 , 这个例子中的正则表达式可以使用r"\"表示 。同样 , 匹配一个数字的"\d"可以写成r"d"
推荐阅读
- 术后去疤痕最佳时间
- 胡夫金字塔是埃及现存规模最大的金字塔 埃及胡夫金字塔建造时间
- 皮沙发刚打了油就可以坐吗,沙发打蜡多少时间可以坐
- 早上空腹燃脂最佳时间
- 路由器隔一段时间就上不了网,断一下电又能用了,这是什么原因?
- 2022冬奥会外国运动员什么时候来中国,2022冬奥会外国选手入境时间
- 《庆余年2》上映时间 庆余年2上映了吗
- 平时睡不够,长假来补觉?提醒:补觉时间过长,小心越睡越困
- 日常做好4个小习惯,坚持一段时间,越来越精致、有气质
- 山姆会员退卡需要多长时间,山姆退卡多久可以办好