新手学习python爬虫小结
用python学习爬虫已经差不多两周了,感觉是时候做个阶段性的小结了。感觉吾爱论坛上,python3爬虫入门的帖子好少,那我就抛砖引玉一下,希望有高手不吝赐教。我自己对某件事的兴趣时间一般都不长,所以我更喜欢在实战中学习python爬虫方面的相关知识,比如计算机网络方面,python编程方面。所以我第一件做的事,就是在网上搜索python3爬虫教程。https://jecvay.com/category/smtech/python3-webbug,我是跟着这位学的(不知道这样会不会侵犯他的著作权,害怕)。
首先,下载pycharm(一个python的IDE,免费版官网下载地址:https://www.jetbrains.com/pycharm/download/#section=windows,选择community版),之后就照着他的文章写代码。我爬的第一个网站就是百度。
打开pycharm,新建一个python文件,如第一张图。建好后,就可以写代码了。
import urllib.request
url='http://www.baidu.com'
data=urllib.request.urlopen(url).read()
data=data.decode('UTF-8')
print(data)
图三是截取的程序运行结果,想不到居然会报错。这个错误提示我data=urllib.request.urlopen(url)有错,有哪位能指导下的,还麻烦,告诉下怎么解决。
我觉得可能是网址有问题,于是我换成了www.zhihu.com不料,还是报错。如图4,它提示我decode有问题,于是我将它注释掉,再编译就成功了。真的搞不懂,为什么www.baidu.com这个网址会提示错误。真的好想知道怎么回事!!另外www.zhihu.com得到的显然不是网站的内容。如图5于是我又查阅了资料,http://cuiqingcai.com/947.html在这篇文章中找到了答案。原来urlopen有种方法是read,就是将返回获取到的网页内容,如果不用read直接print的话,输出的结果为:<addinfourl at 139728495260376 whose fp = <socket._fileobject object at 0x7f1513fb3ad0>>,(我发现原来是我在换网址的时候,把urlopen()后面的read()方法给去掉了,导致了decode有问题,真是对自己无语了!)改掉后,我们就能把知乎网站给爬下来了。如图6所示。很难忘记爬成功时的心情,特别是在失败了那么多次以后。然而,对于百度这个,一直不甘心,为什么网上一样的代码,我怎么就爬不下来,于是在关闭fiddler4后,再试了下,发现可以爬了,如图7。我怀着疑惑,又开启fiddler4,又试了试,发现又报图3那样的错。网上暂时找不到答案,烦请高手解答下。今天就先写到这里吧。明天继续。 排版有待提高 mzbqhbc 发表于 2016-12-9 08:47
代码没有错 换个网站吧错误是504百度网站主动拒绝的, 百度拒绝爬虫的想要成功 爬百度 再首先要模 ...
哦,明白了,那今天就用user-Agent,爬百度 第一次发帖,感觉排版好差,下次争取把排版弄的更好看。 锁进 格式自行检查 Main1 发表于 2016-12-8 23:40
锁进 格式自行检查
锁进?神马意思 Lbf 发表于 2016-12-9 07:56
锁进?神马意思
缩进格式 代码没有错 换个网站吧错误是504百度网站主动拒绝的, 百度拒绝爬虫的想要成功 爬百度 再首先要模拟请求头 就是 User-Agent 共同学习 爬虫 , 不明觉厉 还是用requests 省力多 继续努力 加油