Python抓取网页链接,存入mysql

本文探讨了如何使用Python的urllib2库进行网页爬取,并解析获取的HTML内容,提取链接并存储到数据库中。介绍了如何处理不同类型的网页编码,如gzip编码,并通过正则表达式提取所需链接。此外,还实现了一个简单的数据库模型用于存储爬取的链接,并通过更新和获取链接的功能实现了链接的循环爬取。

#coding:utf-8
import urllib2
import re
import sys
import dbtest
import zlib
#key=raw_input("please input a url:")
#urlstr='http://www.baidu.com/s?wd=%s'% key
#f=urllib2.urlopen(urlstr)
#buf=f.read()
#buf=buf.replace("\n","")
def getHref(url):
 f=urllib2.urlopen(url)
 buf=f.read()
 if f.headers.get('Content-Encoding') == 'gzip':
  buf = zlib.decompress(buf, 16+zlib.MAX_WBITS)
 buf=buf.replace("\n","")
 buf_all=re.findall("<a.*? href=\"(.*?)(?=[\"])",buf)
 return buf_all
def save_start(url):
 while 1:
  try:
   buf_all=getHref(url)
   if buf_all != None and len(buf_all)>0:
    for n in buf_all:
     n.strip
     print n
     if n.find("http://")>-1
      dbtest.save(n,n)
  except:
   pass  
   u=dbtest.get_one_00()
   if u is None:
    break
   dbtest.update_url(u.url)
   url=u.url
  

save_start(sys.argv[1])

 

 

 

#coding:utf-8
from uliweb.orm import *
db=get_connection('mysql://root:123@localhost/spider?charset=utf8')
class spider_url(Model):
 url=Field(str)
 status=Field(str)
db.metadata.drop_all();
db.metadata.create_all()
def save(url,status):
 n=spider_url.get(spider_url.c.url==url)
 if n:
  return;
 n=spider_url()
 n.url=url
 n.status='0'
 n.save()
def update_url(url):
 n=spider_url.get(spider_url.c.url==url)
 n.status="1"
 n.save();
def get_many_00():
 alls=spider_url.filter(spider_url.c.status=='0')
 return alls;
def get_one_00():
 alls=spider_url.get(spider_url.c.status=='0')
 return alls;
#del del_all():
# db.metadata.create_all()
#get_all()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值