Step1. 事先准备
工欲善其事必先利其器,小朋友想学爬虫,要先开机
- 下载sublime(代码编辑器),打开dmg包,拖进application安装
- 下载Python(mac一般自带),按Control+Space打开Spotlight,输入terminal,打开,(注意加粗的这段话,后面输入命令都是在打开的terminal里面进行),查看版本输入
python -V
注意V是大写,这句命令的意思是说,我要看看现在机器上的Python版本,会输出类似以下内容
Python 2.7.10
-
安装pyquery
pyquery(先大概了解一下)
pyquery 是对 jQuery 的Python实现,比起使用正则,要方便得多。文档:
http://pythonhosted.org//pyquery/api.html下载easy_install:
https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py在terminal中输入
sudo python2.7 ez_setup.py
sudo easy_install pyquery
Step2. 写代码
## import pyquery
from pyquery import PyQuery as pq
import urllib
import sys,time
## set encoding
reload(sys)
sys.setdefaultencoding('utf-8')
def getCnUrl(s):
return urllib.quote(s.encode('gbk'))
## set key word
if len(sys.argv) == 2:
s = sys.argv[1]
else:
s = '采购'
## http call
html = pq(url="http://news.yodao.com/search?q=" + getCnUrl(s) + "&start=0&length=10&s=rank&tl&tr=no_range&keyfrom=search.page")
## extract data
title = []
content = []
href = []
for text in html('h3 a'):
singleTitle = "".join(pq(text).text().split(' '))
if len(sys.argv) == 3:
singleTitle += " (" + pq(text).attr('href') + ")"
title.append(singleTitle)
href.append(pq(text).attr('href'))
for text in html('h3').next('p'):
string = "".join(pq(text).text().split(' '))
content.append(string)
## save 2 file
write = ""
with open('out/' + time.strftime("%Y-%m-%d", time.localtime()) + "_" + s, 'w') as f:
for i in range(0,len(title)):
out = title[i] + '\n' + content[i] + '\n'
f.write(out + "\n")
print(out)
f.close()
-
代码大概分两部分:
- 对关键词进行搜索,获取搜索结果。
- 对搜索结果进行解析,组成文本。
在了解了大概组成以后,先不研究代码,目标是先运行起来,这时候,打开之前下载的sublime,Command+N创建一个新的文件,将代码copy进去,Command+S保存,(建议保存在个人文件夹下面,或者桌面)保存时新建一个文件夹,保存在新建的文件夹里面,命名为pq.py
在terminal中输入
python pq.py [可选关键词]
可选关键词可填可不填,为爬取的关键词,默认是“采购”,运行以后,terminal中即显示爬取的内容,内容也会存储在当期文件夹下的out目录下。
后续课程
目前是一个很简单的关键词爬取版本,依赖于网站提供的搜索接口。后面可以深入的内容有很多,包括断句,内容来源提供,设置定时任务,推送到手机,微信公众号的开发等等,在这之前,我们需要先进行以下课程内容的学习:
- Python学习,了解代码编写与修改
- pyquery(jquery)学习,更加灵活地处理爬取内容
- html基础(DOM)
- Http基础