您的位置:首页 > 编程语言 > Python开发

python3.3 爬虫小例子

2014-04-20 14:41 211 查看
第一个爬虫小例子仿照大神:/article/1387702.html 的博客转化成python3.3,算是我的入门爬虫吧

第一个爬虫小例子:

import urllib.request as request
import urllib.parse as parse
import string
print("""
+++++++++++++++++++++++
学校:超神学院
专业:德玛班
姓名:德玛之力
version: python3.2
+++++++++++++++++=++++
""")
def baidu_tieba(url, begin_page, end_page):
for i in range(begin_page, end_page + 1):
sName = 'f:/test/'+str(i).zfill(5)+'.html'
print('正在下载第'+str(i)+'个页面, 并保存为'+sName)
m = request.urlopen(url+str(i)).read()
with open(sName,'wb') as file:
file.write(m)
file.close()
if __name__ == "__main__":
url = "http://tieba.baidu.com/p/"
begin_page = 1
end_page = 3
baidu_tieba(url, begin_page, end_page)
>>>

+++++++++++++++++++++++
学校:超神学院
专业:德玛班
姓名:德玛之力
version: python3.2
+++++++++++++++++=++++

正在下载第1个页面, 并保存为f:/test/00001.html
正在下载第2个页面, 并保存为f:/test/00002.html
正在下载第3个页面, 并保存为f:/test/00003.html


这个是我写的一个爬取多个页面的png图像代码

import urllib.request as request
import urllib.parse as parse
import string
import re
import os
import urllib.error as error
print("""
+++++++++++++++++++++++
学校:超神学院
专业:德玛班
姓名:德玛之力
version: python3.2
+++++++++++++++++=++++
""")
def baidu_tieba(url, begin_page, end_page):
count = 1
for i in range(begin_page, end_page + 1):
sName = 'f:/test/'+str(i).zfill(5)+'.html'
print('正在下载第'+str(i)+'个页面, 并保存为'+sName)
m = request.urlopen(url+str(i)).read()
#创建目录保存每个网页上的图片
dirpath = 'f:/test/'
dirname = str(i)
new_path = os.path.join(dirpath, dirname)
if not os.path.isdir(new_path):
os.makedirs(new_path)
page_data = m.decode('GBK')
page_image = re.compile('<img src=\"(.+?)\"')
for image in page_image.findall(page_data):
pattern = re.compile(r'^http://.*.png$')
if  pattern.match(image):
try:
image_data = request.urlopen(image).read()
image_path = dirpath + dirname +'/'+str(count)+'.png'
count += 1
print(image_path)
with open(image_path, 'wb') as image_file:
image_file.write(image_data)
image_file.close()
except error.URLError as e:
print('Download failed')
with open(sName,'wb') as file:
file.write(m)
file.close()
if __name__ == "__main__":
url = "http://tieba.baidu.com/p/"
begin_page = 1
end_page = 3
baidu_tieba(url, begin_page, end_page)
>>>

+++++++++++++++++++++++
学校:超神学院
专业:德玛班
姓名:德玛之力
version: python3.2
+++++++++++++++++=++++

正在下载第1个页面, 并保存为f:/test/00001.html
f:/test/1/1.png
f:/test/1/2.png
f:/test/1/3.png
f:/test/1/4.png
f:/test/1/5.png
f:/test/1/6.png
f:/test/1/7.png
f:/test/1/8.png
f:/test/1/9.png
正在下载第2个页面, 并保存为f:/test/00002.html
f:/test/2/10.png
正在下载第3个页面, 并保存为f:/test/00003.html
f:/test/3/11.png
f:/test/3/12.png
f:/test/3/13.png
f:/test/3/14.png
f:/test/3/15.png
f:/test/3/16.png
f:/test/3/17.png
f:/test/3/18.png
f:/test/3/19.png
f:/test/3/20.png
f:/test/3/21.png
f:/test/3/22.png

例子3,用BeautifulSoup爬取淘宝首页的目录中的汉字,比re好用,基本不要写正则,也可以嵌套正则

BeatifulSoup4.* 中文文档 http://www.crummy.com/software/BeautifulSoup/bs4/doc/
import urllib
import urllib.request as request
from bs4 import BeautifulSoup
def taobao(url):
response = request.urlopen(url)
html = response.read()
#我是win7系统,默认是gdk要先解码,再用utf8编码就可以显示汉字了
data = html.decode('gbk').encode('utf-8')
soup = BeautifulSoup(data)
for list in soup.find_all('h3'):
print(list.string)
if __name__ == '__main__':
print("""
+++++++++++++++++++++++
学校:超神学院
专业:德玛班
姓名:德玛之力
version: python3.2
+++++++++++++++++=++++
""")
url = 'http://www.taobao.com/?spm=a310q.2219005.1581860521.1.b9kUd4'
taobao(url)
>>>

+++++++++++++++++++++++
学校:超神学院
专业:德玛班
姓名:德玛之力
version: python3.2
+++++++++++++++++=++++

便民服务
服装内衣
鞋包配饰
运动户外
珠宝手表
手机数码
家电办公
护肤彩妆
母婴用品
家纺居家
家具建材
美食特产
日用百货
汽车摩托
文化娱乐
本地生活
虚拟服务
万能的淘宝
None
热卖单品
更新日志
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: