公司要IT转型,我该怎么办?爬虫让我信息搜索更精准

 

 网络爬虫帮我搜索准确信息

 

01 面临问题

 

现代社会最便宜的是信息,最值钱的还是信息

如何在互联网海量信息中快速筛选自己想要的有用信息?

Google很精准,可惜门槛太高。

百度很全面,可惜得有火眼金睛。

小道消息很多,可惜基本都是谣言。

怎么办?

 

02 怎么办

 

既然学了Python,

那么Python“三好”之一的网络爬虫就不能不学。

这里尝试用Python搭建一个简单的可扩展的个人搜索引擎Demo

 

Python网络爬虫

通过Python获取url的网页html内容,

用正则表达式分析html,

得到想要的内容,包括url、文字、图片等。

还可以对网页内url进行分析,

进一步爬取,遍历虚拟世界,直到获得自己想要的内容。

 

 

Python爬取百度首页

没办法,国内搜索离不开百度。

今天我们用python3来搜索。

Python自带的urllib库足以练习,urllib是一组处理URLs的包,

其中request模块可以打开和读取url链接。

 

看下百度首页爬取示例。

from urllib import requestresponse = request.urlopen("http://www.baidu.com/") #打开百度首页html = response.read()  #读取响应值#需要解码decode后,才能正常显示。编码方式可以通过网页查询html = html.decode('utf-8')   print(html) #可以发现正常获取

 

查看html的详细内容,如

In[23]: html[:20]Out[23]: '<!DOCTYPE html><!--S'

 

可以保存为本地html文件,离线查看。

 

Python处理html

 

如何智能处理html文本是关键

 

首先通过Chrome浏览器开发者模式,分析下待爬取网页。

对网页结构有所了解,

知道我们需要的内容在哪里?

 

如提取百度首页右上角常用导航名称及url。

F12打开开发者模式,

通过右上角箭头点击网页感兴趣区域,

可以快速定位到源代码部分。

 

 

分析下该部分源代码:

非常有规律,

用正则表达式可以非常容易完成导航菜单和url提取工作。

 

正则表达式处理HTML

写出提取标题的url和标题的正则表达式:

#开始不会一次性提取,先提问导航栏的全部内容patten_u1 = re.compile('<div id="u1">.*?</div>',re.S)item = patten_u1.findall(html)#然和提取每一个导航链接patten = re.compile(r'<a href="(?P<url>.*?)".*?class="mnav".*?>(?P<title>.*?)</a>',re.S)items = patten.findall(item[0])

看下输出结果,和想象的一样。

In[50]:itemsOut[50]: [('http://news.baidu.com', '新闻'), ('http://www.hao123.com', 'hao123'), ('http://map.baidu.com', '地图'), ('http://v.baidu.com', '视频'), ('http://tieba.baidu.com', '贴吧'), ('http://xueshu.baidu.com', '学术')]

 

python强大之处就是轮子多

这个功能肯定不用自己写。

 

BeautifulSoup快速处理HTML

正则表达式处理网页还是比较复杂,

不同网页可能要写不同表达式。

BeautifulSoup是一个HTML/XML的解析器,

主要的功能也是如何解析和提取 HTML/XML 数据。

非常强大。

 

上面的功能3句代码即可(其实只是一句):

from bs4 import BeautifulSoup   #导入库#转换html文件为BS对象soup = BeautifulSoup(html, 'lxml') #安装逻辑选择,首先过滤 mnav,然和遍历,分别获取url和名称  items =[(i.attrs['href'],i.text) for i in soup.select('.mnav')]

 

结果和之前一样。

大家可以尝试一下soup.select('.mnav')、soup.select('.mnav')[0].attrs的内容。

 

BeautifulSoup之道值得专门去求、问,留待以后。

 

Python实现个人搜索引擎Demo

了解Python爬虫的基本操作和知识后,

就可以搭建个性化搜索引擎爬虫的基本框架。

 

应该有以下几个功能点:

  • 搜索若干关键字,以空格区分,利用百度搜索引擎;

  • 分析返回网页内容,提取标题、url、简介等信息;

  • 过滤广告页面、关键字无关页面,匹配度不高页面;

  • 友好输出目标url、标题和简介供用户参考。

 

最终代码:

这里太短,就不放了。想要源代码约我加好友私聊给你。

看看应用效果,上图

 

好像还不错,输出命名也很友好。

 

上面广告已经自动过滤,同时减少68%的无效信息。

至此,在公司IT转型过程中,我又学会一个新技能,以后搜索再也不怕广告了。

 

 

03 为什么

 

为什么要这么做?

信息时代,信息搜索,资源查询已经是基本技能。

爬虫技术是关键。

我必须要知道。

 

为什么可以爬?

其中的道很简单。

Python发送请求,收到响应。

和你使用浏览器一样。

可惜暂时还不能传道,有些讲不透。

 

为什么可以分析?

正则表达式很强大。

每个语言都有,都差不多。

当然正则表达式学习很痛苦。

以后找个时间记录下入门过程。

 

为什么有时爬不了?

刚才在测试的时候进程说百度安全验证,大概率被反爬虫。

 

 

爬虫与反爬,孪生兄弟,相爱相杀。

有很多术法要学习,暂时未入门。

 

04 其他选择

 

有没有更好的选择?

有个requests库,大神之作。

号称为人类而写的HTTP库。

Requests is an elegant and simple HTTP library for Python, built for human beings.

非常强大,值得学习。

还有很多爬虫框架,

如Scrapy、Grab等。

不过这些都是招式,感兴趣使用一个即可。

 

如果你想使用爬虫。

选一个目标网站,将想要的信息爬下来吧。

 

欢迎大家留言讨论,也可以通过公众号求道轩“约我”私信交流。

下篇我会继续分享第3个小项目实践,欢迎关注。

期待更多道友分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值