刚刚闲着无聊,随便写了一个抓取博客园的py
2013-06-17 20:45
281 查看
只抓第一页没有重复抓取验证、没有sleep ; 哈哈想抓更多调用call_me就好了(排版有点淡淡的疼)
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pyquery import PyQuery as pq
from lxml import etree
import sys
import re
import urllib
import urllib2
import json
import hashlib
import random
import time
import os
import cookielib
import writetemp
#抓取调用函数
def call_me(url):
if(url == None):
print 'did\'t url'
try:
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
p = opener.open(url)
if p.getcode() != 200:
sys.exit()
html = p.read()
blog_list_url = []
blogs_info = []
test = pq(html)
blog_list = test('#post_list a.titlelnk')
for m in blog_list:
blog_list_url.append(pq(m).attr('href'))
blog_list_url = sorted(set(blog_list_url),key=blog_list_url.index)
for m_url in blog_list_url:
try:
new_p = opener.open(m_url)
if new_p.getcode() != 200:
sys.exit()
m_html = new_p.read()
db_blog = pq(m_html)
m_class = []
info = {
'title': db_blog('#cb_post_title_url').text(),
'time': db_blog('#post-date').text(),
'info':db_blog('#cnblogs_post_body').html(),
'link': m_url
}
print info
blogs_info.append(info)
except:
continue
writetemp.write_temp(blogs_info)
except Exception,e:
print e
finally:
print 'original page done'
#demo
#url = 'http://www.cnblogs.com/'
#call_me(url)
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pyquery import PyQuery as pq
from lxml import etree
import sys
import re
import urllib
import urllib2
import json
import hashlib
import random
import time
import os
import cookielib
import writetemp
#抓取调用函数
def call_me(url):
if(url == None):
print 'did\'t url'
try:
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
p = opener.open(url)
if p.getcode() != 200:
sys.exit()
html = p.read()
blog_list_url = []
blogs_info = []
test = pq(html)
blog_list = test('#post_list a.titlelnk')
for m in blog_list:
blog_list_url.append(pq(m).attr('href'))
blog_list_url = sorted(set(blog_list_url),key=blog_list_url.index)
for m_url in blog_list_url:
try:
new_p = opener.open(m_url)
if new_p.getcode() != 200:
sys.exit()
m_html = new_p.read()
db_blog = pq(m_html)
m_class = []
info = {
'title': db_blog('#cb_post_title_url').text(),
'time': db_blog('#post-date').text(),
'info':db_blog('#cnblogs_post_body').html(),
'link': m_url
}
print info
blogs_info.append(info)
except:
continue
writetemp.write_temp(blogs_info)
except Exception,e:
print e
finally:
print 'original page done'
#demo
#url = 'http://www.cnblogs.com/'
#call_me(url)
相关文章推荐
- 刚刚闲着无聊,随便写了一个抓取博客园的py
- 周末闲着无聊分享一个自己写的带呼吸效果的android水波纹自定义view
- 闲着无聊,凭着记忆研究了一个GDI+,想要扩展DATAGRIDVIEW,正在推进
- 刚刚开通博客园 终于有了一个专业的技术博客
- 闲着无聊-AC一个水题
- 最近有些无聊写了一个抓取github的ss账号的东西
- 刚刚遇到的一个问题:多个网站同时抓取
- 那天闲着没事,试着编了一个木马
- 无聊写了一个js的东西,关于按键的控制
- 关于qq用户表的创建----闲着无聊,瞎想的
- 刚刚解决一个超过19G的数据库
- 我开源了一个ios应用,你们拿去随便玩
- 又无聊写了一个字符串二进制代码查看工具
- 一个无聊的话题:PHP的安装杂谈(2)
- .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
- [转]web.py在GAE上运行的例子--一个留言本
- 一个(伪)MaterialDesign风格的博客园皮肤
- faster rcnn demo.py:在一个窗口显示所有类别标注
- github上比较有名的一个前端面试题,随便做做(5)
- 【观点】青云QingCloud:我还只是一个刚刚达标的独角兽