利用pyquery爬取解析新闻(小朋友使用指南)

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()
  • 代码大概分两部分:

    1. 对关键词进行搜索,获取搜索结果。
    2. 对搜索结果进行解析,组成文本。
  • 在了解了大概组成以后,先不研究代码,目标是先运行起来,这时候,打开之前下载的sublime,Command+N创建一个新的文件,将代码copy进去,Command+S保存,(建议保存在个人文件夹下面,或者桌面)保存时新建一个文件夹,保存在新建的文件夹里面,命名为pq.py

  • 在terminal中输入

python pq.py [可选关键词]

可选关键词可填可不填,为爬取的关键词,默认是“采购”,运行以后,terminal中即显示爬取的内容,内容也会存储在当期文件夹下的out目录下。

利用pyquery爬取解析新闻(小朋友使用指南)_第1张图片
结果样例

后续课程

目前是一个很简单的关键词爬取版本,依赖于网站提供的搜索接口。后面可以深入的内容有很多,包括断句,内容来源提供,设置定时任务,推送到手机,微信公众号的开发等等,在这之前,我们需要先进行以下课程内容的学习:

  • Python学习,了解代码编写与修改
  • pyquery(jquery)学习,更加灵活地处理爬取内容
  • html基础(DOM)
  • Http基础

你可能感兴趣的:(利用pyquery爬取解析新闻(小朋友使用指南))