Python学习之实现自己的网络爬虫 二

        之前自己看教程弄了一下这个爬虫,但是后来发现了这个教程,又重新再好好学学。

http://cuiqingcai.com/category/technique/python

我是按照这上面练习的,其中也遇到了一些问题。

我用的是win7 64位系统,所以安装这些的时候都要用64位的。安装的时候遇到了些问题,主要都是版本的问题。、

这是所有版本的下载列表:https://www.python.org/downloads/windows/

这是我用的那个64位的版本:https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi

在安装的时候最好选择:当前用户,不要选那个所有用户,如果选了所有用户,后面还会遇到找不到这个路径的问题。

在安装的过程中还有一步,就是添加环境变量路径的那个选项,如果你在安装的时候选上,就不用自己去添加了。


之后安装这个:

一定要选好对应的版本:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/

我用的是这个64的版本:http://cznic.dl.sourceforge.net/project/pywin32/pywin32/Build%20219/pywin32-219.win-amd64-py2.7.exe


之后安装这个Pip:

下载地址:https://bootstrap.pypa.io/get-pip.py

这个下来就是个.py的文件,放在一下目录下,然后用终端到这个目录下,执行: python get-pip.py安装完就好了


然后还要安装lxml和pyopenssl

这两个就用刚才那个pip安装就可以了:

pip install lxml

pip install pyopenssl

都是在终端上执行的。


然后就是安装那个scrapy了,

安装和上面那两个是一样的:

pip install scrapy


基本上就安装完了。我要去练习第一个爬“糗事百科”了。

我在按照那个教程来写的时候遇到了问题:

因为我想和后面的版本兼容的,因为2.x的版本是有print和print()的

但是3.x的版本只有print()了,所以我就想用成print()这样的。就遇到了问题:

# coding: utf-8
import urllib
import urllib2
import re
page = 1
url = "" + str(page)
user_agent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"
headers = { "User-Agent" : user_agent }
try:
    request = urllib2.Request(url, headers = headers)
    response = urllib2.urlopen(request)
    #print(response.read())
except urllib2.URLError, e:
    if hasattr(e, "code"):
        print(e.code)
    if hasattr(e, "reason"):
        print(e.reason)
content = response.read().decode("utf-8")
pattern = re.compile(
        '<div.*?class="author.*?">.*?<a.*?</a>.*?<a.*?>(.*?)'+
        '</a>.*?<div.*?class="content".*?title="(.*?)">(.*?)</div>'+
        '(.*?)<div class="stats.*?class="number">(.*?)</i>', re.S)
items = re.findall(pattern, content)
for item in items:
    print(item[0], item[1], item[2], item[3], item[4])

看最后我打印的print()是这样的,但是原教程中是print没有括号的,我一直执行我这个,输出大概是这样的:

(u'\u6211\u6709\u70b9\u574f\u3001 ', u'2015-03-25 15:16:12', u'\n\n\u6628\u5929\u5e2e\u540c\u4e8b\u5145\u8bdd\u8d39\uff0c\u5145\u9519\u53f7\u7801\u4e86\uff0c\u6253\u7535\u8bdd\u7ed9\u90a3\u4e2a\u53f7\u7801\uff0c\u8bf4\u4eca\u5929\u4e2d\u5348\u628a\u94b1\u9001\u5230\u5e97\u91cc\uff0c\u4eca\u5929\u4e2d\u5348\u771f\u7684\u6765\u5e97\u91cc\u9001\u4e86100\u5143\uff0c\u6211\u53c8\u76f8\u4fe1\u4e16\u754c\u4e0a\u8fd8\u662f\u597d\u4eba\u591a\u4e86\uff0c\u7ed9\u5927\u59d032\u4e2a\u8d5e\n\n', u'\n\n\n', u'6103')

不输出中文,我在网上查了一下,也没有找到是怎么回事,后来我改成print就可以正常的输出中文了。

for item in items:
    print item[0], item[1], item[2], item[3], item[4]

有时候不懂真是容易遇到小问题,其实就不是小问题了。









你可能感兴趣的:(Python学习之实现自己的网络爬虫 二)