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中

时间: 2024-09-28 16:37:48

python抓取伯乐在线的所有文章,对标题分词后存入mongodb中的相关文章

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 s

Python抓取简书的热门文章

原理和上章获取段子一样,只不过是换了解析的内容. 代码: #-*- coding: utf-8 -*- import urllib2 import re def GetPageContent(page_url,heads): try: req = urllib2.Request(page_url,headers=heads) resp = urllib2.urlopen(req) return resp.read().decode('utf8') except Exception, e: pri

Scrapy分布式爬虫打造搜索引擎——(二) scrapy 爬取伯乐在线

1.开发环境准备 1.爬取策略 目标:爬取“伯乐在线”的所有文章 策略选择:由于“伯乐在线”提供了全部文章的索引页 ,所有不需要考虑url的去重方法,直接在索引页开始,一篇文章一篇文章地进行爬取,一直进行到最后一页即可. 索引页地址:http://blog.jobbole.com/all-posts/ 2. 搭建python3虚拟环境 打开cmd,进入命令行,输入workon,查看当前存在的虚拟环境:  workon 为爬虫项目,新建python3虚拟环境: mkvirtualenv -p py

使用python抓取CSDN关注人的所有发布的文章

# -*- coding: utf-8 -*- """ @author: jiangfuqiang """ import re import urllib2 import cookielib import time def startParser(author,page=1): reg = r'<a href="/\w+/article/details/\d+">\s*\t*\n*\s*\t*\s*.*?\t*\n

使用python抓取CSDN关注人的全部公布的文章

# -*- coding: utf-8 -*- """ @author: jiangfuqiang """ import re import urllib2 import cookielib import time def startParser(author,page=1): reg = r'<a href="/\w+/article/details/\d+">\s*\t*\n*\s*\t*\s*.*?\t*\n

Python爬虫-爬取伯乐在线美女邮箱

爬取伯乐在线美女邮箱 1.登录界面的进入,设置url,cookie,data,headers 2.进入主页,点击邮箱链接,需要重新设置url,cookie(读取重新保存的cookie),data,headers 1 ''' 2 爬取伯乐在线的美女联系方式 3 需要: 4 1. 登录 5 2. 在登录和相应声望值的前提下,提取对方的邮箱 6 ''' 7 8 from urllib import request, error, parse 9 from http import cookiejar 1

Python抓取需要cookie的网页

Python抓取需要cookie的网页 在仿照<Python小练习:可视化人人好友关系>一文时,需要登录模拟登录人人网.然而自从CSDN事件之后,人人网开始使用加密方式处理登录名和密码,直接使用post方式已经无法登陆人人网.这时,从豆瓣讨论中找到了解决方法: 1. 首先使用浏览器登陆人人,然后找到浏览器中关于登陆的Cookie: 2. 将Cookie记录下来,在Python中使用cookie模块模拟浏览器的行为: 3. 取得并解析数据. 1. HTTP协议与Cookie 抓取网页的过程跟浏览

使用python抓取并分析数据—链家网(requests+BeautifulSoup)(转)

本篇文章是使用python抓取数据的第一篇,使用requests+BeautifulSoup的方法对页面进行抓取和数据提取.通过使用requests库对链家网二手房列表页进行抓取,通过BeautifulSoup对页面进行解析,并从中获取房源价格,面积,户型和关注度的数据. 准备工作 首先是开始抓取前准备工作,导入需要使用的库文件,这里主要使用的是requests和BeautifulSoup两个.Time库负责设置每次抓取的休息时间.这里并非全部,后续还会在过程中导入新的库. 抓取列表页 开始抓取

用Python抓取全站中的404错误

链接是SEO的一个重要因素.为了在搜索引擎中获取更好的排名,一定要定期检查下网站中的链接是否依然有效.特别是由于一些巨大的改动可能会导致坏链接的出现.要检测这些站内的链接问题,可以通过一些在线的工具.比如Google Analytics,Bing Webmaster Tools,brokenlinkcheck.com等.尽管有现成的工具,我们也可以自己来编写一个.使用Python会非常容易. 参考原文:How to Check Broken Links with 404 Error in Pyt