Python应用于爬虫领域业界已经相当的广泛了,今天就采用urllib + re 爬取下百度国内即时新闻。
软件环境:
Python : 3.6.0
PyCharm: Community 2017.2
Python 下载地址 https://www.python.org/downloads/
Pycharm 下载地址(Community是免费的) https://www.jetbrains.com/pycharm/download/#section=windows
主要思路:
采用urllib请求制定url,拿到网页的html,然后采用re进行正则匹配找到新闻标题
爬取过程:
1. 导入urllib 和 re 两个模块
1
2
3
<code>import</code> <code>urllib</code>
<code>from</code> <code>urllib </code><code>import</code> <code>request</code>
<code>import</code> <code>re</code>
2. 采用urllib.request.urlopen 打开百度信息url,并取得所有html
<code>url </code><code>=</code> <code>"http://news.baidu.com/guonei"</code>
<code>response </code><code>=</code> <code>urllib.request.urlopen(url)</code>
<code>html </code><code>=</code> <code>response.read().decode(</code><code>'utf-8'</code><code>)</code>
urllib.urlopen()方法用于打开一个url地址。
read()方法用于读取URL上的数据,并把整个页面下载下来。
3. 在Chrome中按F12可以查看到网页的源代码,可以看到新闻位于 div id="instant-news"下面
4. 获取即时信息的整个div的html并存储到变量: instant_news_html
<code>pattern_of_instant_news </code><code>=</code> <code>re.</code><code>compile</code><code>(</code><code>'<div id="instant-news.*?</div>'</code><code>,re.S)</code>
<code>instant_news_html </code><code>=</code> <code>re.findall(pattern_of_instant_news, html)[</code><code>0</code><code>]</code>
5. 从全部news的html中匹配出每一个新闻标题
4
<code>pattern_of_news </code><code>=</code> <code>re.</code><code>compile</code><code>(</code><code>'<li><a.*?>(.*?)</a></li>'</code><code>, re.S)</code>
<code>news_list </code><code>=</code> <code>re.findall(pattern_of_news, instant_news_html)</code>
<code>for</code> <code>news </code><code>in</code> <code>news_list:</code>
<code> </code><code>print</code><code>(news)</code>
将会看到如入结果
完整源代码:
5
6
7
8
9
10
11
12
13
14
15
16
<code></code>
本文转自 yuanzhitang 51CTO博客,原文链接:http://blog.51cto.com/yuanzhitang/2057777,如需转载请自行联系原作者