Python学习前传 —— Python网络爬虫

Posted zqixiao_09

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习前传 —— Python网络爬虫相关的知识,希望对你有一定的参考价值。

     原来一直是Linux C 开发,现在开始学习另一门面向过程的语言 —— Python。

     学习一门语言,重要的在于思想,现在就以Linux C 开发者的角度来学习Python。我们先不讲Python基础,我们直接来看一段网络爬虫代码,看一下Python语言的特点。那么什么是网络爬虫呢?网络爬虫,又称为网络蜘蛛(WebSpider),非常形象的一个名字。如果你把整个互联网想象成类似于蜘蛛网一样的构造,那么这只爬虫,就是要在上面爬来爬去,以便捕获我们需要的资源。

     下面我们来看代码,这段代码的主要功能是编写一个爬虫,爬取百度百科“孙悟空”的词条,并将所有包含“view”关键字的链接按照格式打印出来,并进入每一个词条,然后检测该词条是否有副标题,如果有就将副标题一并打印出来:

import urllib.request
import urllib.parse
import re
from bs4 import BeautifulSoup

def main():
    keyword = input("请输入关键词:")
    keyword = urllib.parse.urlencode("word":keyword)
    response = urllib.request.urlopen("http://baike.baidu.com/search/word?%s" % keyword)
    html = response.read()
    soup = BeautifulSoup(html, "html.parser")

    for each in soup.find_all(href = re.compile("view")):
        content = ''.join([each.text])
        url2 = ''.join(["http://baike.baidu.com", each["href"]])
        response2 = urllib.request.urlopen(url2)
        html2 = response2.read()
        soup2 = BeautifulSoup(html2, "html.parser")
        if soup2.h2:
            content = ''.join([content, soup2.h2.text])
        content = ''.join([content, " -> ", url2])
        print(content)

if __name__ == "__main__":
    main()

我们可以在IDLE下使用F5快捷键执行程序,看一下效果:


ImportError: No module named request,说明我们没有安装request这个模块

可以在cmd下执行 pip intall requests 命令安装requests模块


安装成功后,有如下打印:


如果没有安装pip,还需要进入命令行,然后把目录切换到python的安装目录下的Script文件夹下,运行 easy_inatall pip


其实这样并不能解决问题,还是会出现问题


这是Python27的问题,我们重新安装下Python34,在Python34下执行,就不会出现这个问题了。


好了,看一下效果吧,博主昨晚刚看完《黑豹》,大场面太少,黑妹子太跳戏。。5.5分。。开玩笑,看一下输入“黑豹”的效果:


我们看下在网页中的效果:可以看到(美国漫威漫画旗下超级英雄)这个子标题


还有个小问题,黑豹电影在爬虫中居然没有爬到。。这是什么原因。

还有个问题,爬虫结果正常,但最后出现了如下错误,暂未分下,大家可以看一下



我们在下一篇中分析下代码


以上是关于Python学习前传 —— Python网络爬虫的主要内容,如果未能解决你的问题,请参考以下文章

学习python爬虫一个月的小兄弟,如何日赚800的

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

Python 爬虫是什么

如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化展示

如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化展示