初学Python,一只小爬虫

说是爬虫,其实就是个网页下载的脚本。当然,作为第一次,我是献给了wordpress!

开始学习python,渐渐地想要做点什么。

有时候,我们去看别人的博客,无法看到全部的文章,有些或许已经遗失了,有些藏得太深,这是一份遗憾吧!

如果有个脚本能够帮我下载所有的存在文章就好了,我这样想到。
所以我写了这个爬虫,以下是源码。

[php]
#coding = utf-8
print u”’
#—————————————————————-
#程序:wordpress爬虫
#功能:直接下载整个wordpress站点所有文章
#只能用于wordpress搭建的站点,不排除有更改参数导致错误的的可能
#—————————————————————-
”’

import urllib2
import re

print u’请输入wordpress博客域名,例如:“gaobo.name”,’
url = raw_input(‘>’)
print u’请输入要下载的最大文章数’
p = int(raw_input(‘>’)) + 1

ps = range(1,p)
def getHtml():
print u’开始下载中’
for post in ps:
urls = bytes(‘http://’ + url + ‘/’ + ‘?p=’ + bytes(post))
try:

html = urllib2.urlopen(urls).read()

with open(bytes(post) + ".html","w+") as wp:
wp.write(html)
print bytes(post) + u’号文章ok’

except urllib2.HTTPError,e:
print bytes(post) +u’号文章发生错误,代码’+ bytes(e.code)

getHtml()
[/php]

现在看起来还有点别捏,不过这是前几天边看书边写的,现在虽然可以做得更好,但是还是想作为留念。

大致功能就是,把存在(已发布)的文章,或者元素(图片什么的),也就是wordpress不返回404的页面全部下载。
用的是”?p=”,这个get。应该是wordpress的pid吧。

目前还是功能太弱,只能下载网页,而且无法辨别文章标题;不过,作为第一次的脚本,我觉得很有成就感,O(∩_∩)O~


爬虫更新版,以下是代码。主要更新:以title保存文章,这样就能够找到感兴趣的文章了,好吧,已经可以了,此爬虫不在更新。
其实很简单,主要是中文编码不好办,搞了我一下午,结果是默认编码书写错误,应该用“:”的,我用错,用成“=”了。

[php]
# -*- coding: utf-8 -*-
print u”’
#—————————————————————-
#程序:wordpress爬虫
#功能:直接下载整个wordpress站点所有文章
#只能用于wordpress搭建的站点,不排除有更改参数导致错误的的可能
#—————————————————————-
”’

import urllib2
import re

print u’请输入wordpress博客域名,例如:“gaobo.name”,’
url = raw_input(‘>’)
print u’请输入要下载的最大文章数’
p = int(raw_input(‘>’)) + 1

patt = ‘<title>(.*?)|(.*?)</title>’

ps = range(1,p)
def getHtml():
print u’开始下载中’
for post in ps:
urls = bytes(‘http://’ + url + ‘/’ + ‘?p=’ + bytes(post))
try:

html = urllib2.urlopen(urls).read()
tt = re.search(patt,html).group(1).decode(‘utf-8′)

with open(tt + ".html","w+") as wp:
wp.write(html)
print bytes(post) + u’号文章ok’
print tt

except urllib2.HTTPError,e:
print bytes(post) +u’号文章发生错误,代码’+ bytes(e.code)

getHtml()
[/php]

《初学Python,一只小爬虫》有8个想法

    1. =-=这个其实很简单的,我也只是刚开始学而已,比不上你的C语言好啊就是用网页库下载html源码而已,而且也要针对主题才可以,爬虫这东西只能定做

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注