python抓取伯乐在线的全部文章,对标题分词后存入mongodb中
依赖包:
1.pymongo
2.jieba
# -*- coding: utf-8 -*-
"""
@author: jiangfuqiang
"""
from HTMLParser import HTMLParser
import urllib2
import sys
import pymongo
import time
import jieba
import traceback
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
class FetchJobble(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.isPostThumb = False
self.isPostMeta = False
self.isMetaTitle = False
self.isCategoryTag = False
self.isComment = False
self.isexcerpt = False
self.isReadMore = False
self.isPicture = False
self.data = {}
self.result = []
def handle_starttag(self,tag,attrs):
if tag == 'div':
for key,value in attrs:
if key == 'class':
if value == 'post-thumb':
self.isPostThumb = True
elif value == 'meta-title':
self.isMetaTitle = True
elif tag == 'a' and self.isPostThumb == True:
for key, value in attrs:
if self.isReadMore:
if key == 'href':
self.data['redmoreLink'] = value
self.data['keyword'] = ",".join(jieba.cut(self.data['title']))
self.result.append(self.data)
self.isPostThumb = False
self.isMetaTitle = False
self.isReadMore = False
self.isCategoryTag = False
self.isComment = False
self.isexcerpt = False
self.isPicture = False
self.data = {}
else:
if key == 'class':
if value == 'meta-title':
self.isMetaTitle = True
elif key == 'rel':
if value == 'category tag':
self.isCategoryTag = True
elif key =='href':
if value.find('#respond') > 0:
self.isComment = True
elif tag == 'span' and self.isComment == True:
for key, value in attrs:
if key == 'class' and value == 'excerpt':
self.isexcerpt = True
elif key == 'class' and value == 'read-more':
self.isReadMore = True
elif tag == 'img' and self.isPostThumb and self.isPostMeta == False:
for key, value in attrs:
if key == 'src':
self.data['imgSrc'] = value
def handle_endtag(self,tag):
pass
def handle_data(self,data):
if self.isMetaTitle:
self.data['title'] = data
self.isMetaTitle = False
elif self.isCategoryTag:
ct = ''
if 'tag' in self.data.keys() :
ct = self.data['tag'] + "," + data
else:
ct = data
self.data['tag'] = ct
self.isCategoryTag = False
elif self.isComment and 'comment' not in self.data.keys():
self.data['comment'] = data.split(" ")[0]
elif self.isexcerpt:
self.data['desc'] = data
self.isexcerpt = False
def getResult(self):
return self.result
if __name__ == "__main__":
con = pymongo.Connection('localhost', 27017)
db = con.blog
fetchblog = db.fetch_blog
url = "http://blog.jobbole.com/all-posts/page/%d"
count = 1
flag = False
headers={
'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
while flag == False:
try:
req = urllib2.Request(url%count,headers=headers)
request = urllib2.urlopen(req)
data = request.read()
fj = FetchJobble()
fj.feed(data)
result = fj.getResult()
if len(result) < 1:
flag = True
else:
for doc in result:
fetchblog.insert(doc)
print "page is %d"%count
count += 1
time.sleep(5)
except Exception, e:
traceback.print_exc()
print "parse error",e
python抓取伯乐在线的全部文章,对标题分词后存入mongodb中的更多相关文章
- Scrapy爬取伯乐在线的所有文章
本篇文章将从搭建虚拟环境开始,爬取伯乐在线上的所有文章的数据. 搭建虚拟环境之前需要配置环境变量,该环境变量的变量值为虚拟环境的存放目录 1. 配置环境变量 2.创建虚拟环境 用mkvirtualen ...
- python爬取博客圆首页文章链接+标题
新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ...
- Python抓取豆瓣《白夜追凶》的评论并且分词
最近网剧<白夜追凶>在很多朋友的推荐下,开启了追剧模式,自从琅琊榜过后没有看过国产剧了,此剧确实是良心剧呀!一直追下去,十一最后两天闲来无事就抓取豆瓣的评论看一下 相关代码提交到githu ...
- python爬虫scrapy框架——爬取伯乐在线网站文章
一.前言 1. scrapy依赖包: 二.创建工程 1. 创建scrapy工程: scrapy staratproject ArticleSpider 2. 开始(创建)新的爬虫: cd Artic ...
- 爬虫实战——Scrapy爬取伯乐在线所有文章
Scrapy简单介绍及爬取伯乐在线所有文章 一.简说安装相关环境及依赖包 1.安装Python(2或3都行,我这里用的是3) 2.虚拟环境搭建: 依赖包:virtualenv,virtualenvwr ...
- python抓取月光博客的全部文章而且依照标题分词存入mongodb中
猛击这里:python抓取月光博客的全部文章
- 使用python抓取CSDN关注人的全部公布的文章
# -*- coding: utf-8 -*- """ @author: jiangfuqiang """ import re import ...
- Python实现抓取CSDN博客首页文章列表
1.使用工具: Python3.5 BeautifulSoup 2.抓取网站: csdn首页文章列表 http://blog.csdn.net/ 3.分析网站文章列表代码: 4.实现抓取代码: __a ...
- python抓取头条文章
python抓取头条美文并存储到mongodb # Author:song from multiprocessing import Pool from urllib.parse import urle ...
随机推荐
- SQL RIGHT JOIN 关键字
SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行. RIGHT JOIN ...
- 服务器上的iptables
服务器上的iptables 防火墙设置脚本规则 完整脚本如下: 复制代码代码示例: #!/bin/bash# by www.jbxue.comiptab="/sbin/iptables&qu ...
- Skyline学习教程
转自:http://yunjinzh.blog.sohu.com/165279318.html 当初开设这个blog的初衷就是将PPT与专业技术进行结合 将专业技术的介绍更加艺术化 但是之前一直都没有 ...
- POJ 2828-Buy Tickets(线段树)
题意: 有n个人,每人有一定的价值,给n个安排,每次安排有两个数 p,v p是这个人前面人的个数 (直接插在第p个人后面其他人后移),v是它的价值,n个安排后 求最终的价值序列. 分析: 越在后面的安 ...
- C++基类和派生类之间的转换
本文讲解内容的前提是派生类继承基类的方式是公有继承,关键字public 以下程序为讲解用例. #include<iostream> using namespace std; class A ...
- 傲游浏览器4,傲游浏览器5如何一键批量打开url链接。
傲游浏览器批量打开网址的插件没用了.有很多网友发了方法也无法实现.实际上,是可以实现傲游浏览器4,傲游浏览器5一键批量打开url链接的.我来告诉大家如何来实现.最新的M5都能使用.在收藏夹添加一个收藏 ...
- LeetCode题解——Reverse Integer
题目: 数字翻转,即输入123,返回321:输入-123,返回-321. 代码: class Solution { public: int reverse(int x) { , sign = ; ) ...
- [原][Android]All WebView methods must be called on the same thread.
问题 webView调用JS出错. class TestJS { ...... public TestJS(){ } ...
- mybatis系列-02-mybatis框架
2.1 mybatis是什么 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...
- PHP编码规范整理,很全很实用(图文版)
有一个组织叫做“php互操作性框架制定小组”,这个小组的主要目的是制定各种PHP编码规范的,下面就是我根据小组提供的建议整理的一些常用的编码规范. PSR-1: 1.PHP代码文件必须以<?ph ...