好友
阅读权限10
听众
最后登录1970-1-1
|
Lbf
发表于 2016-12-8 23:37
用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的话,输出的结果为:<[color=teal !important]addinfourl at[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]139728495260376[color=rgb(0, 111, 224) !important] [color=teal !important]whose [color=rgb(0, 45, 122) !important]fp[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]<[color=rgb(0, 45, 122) !important]socket[color=rgb(51, 51, 51) !important].[color=teal !important]_fileobject [color=rgb(128, 0, 128) !important]object[color=rgb(0, 111, 224) !important] at[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]0x7f1513fb3ad0[color=rgb(0, 111, 224) !important]>>,(我发现原来是我在换网址的时候,把urlopen()后面的read()方法给去掉了,导致了decode有问题,真是对自己无语了!)改掉后,我们就能把知乎网站给爬下来了。如图6所示。很难忘记爬成功时的心情,特别是在失败了那么多次以后。然而,对于百度这个,一直不甘心,为什么网上一样的代码,我怎么就爬不下来,于是在关闭fiddler4后,再试了下,发现可以爬了,如图7。我怀着疑惑,又开启fiddler4,又试了试,发现又报图3那样的错。网上暂时找不到答案,烦请高手解答下。今天就先写到这里吧。明天继续。 |
-
图2
-
图3,作为一个菜鸟,当然是搞不懂啦
-
图4
-
图5,成功了,但结果有点怪
-
图7
-
图6
-
图1,在untitled1,点击右键,出现New,停在New,选择出现的python file
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|