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网络爬虫抓取微信好友数量以及微信好友的男女比例
如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例