example:    http://xyzp.haitou.cc/article/722427.html

首先是直接下载好每个页面,可以使用 os.system( "wget "+str(url))  或者urllib2.urlopen(url) ,很简单不赘述。

然后,重头戏,进行信息抽取:

#!/usr/bin/env python
# coding=utf-8 from bs4 import BeautifulSoup
import codecs
import sys
import os
reload(sys)
sys.setdefaultencoding("utf-8")
import re from pymongo import MongoClient def get_jdstr(fname):
soup = ""
retdict = {}
with open(fname) as fr:
soup = BeautifulSoup(fr.read().replace('""','"')) jdstr = soup.get_text() retdict["inc_name"] = soup.title.string.split()[0]
retdict["page_content"] = soup.find_all("div","panel-body panel-body-text")[0].get_text()
retdict["index_url"] = re.search("http://xyzp.haitou.cc/article/\d+.html",jdstr).group()
retdict["info_from"] = soup.find_all("p","text-ellipsis")[0].contents[1].get_text()
retdict["workplace"] = soup.find_all("p","text-ellipsis")[1].contents[1].get_text()
retdict["info_tag"] = soup.find_all("p","text-ellipsis")[2].contents[1].get_text()
retdict["pub_time"] = soup.find_all("p","text-ellipsis")[3].contents[1].get_text() return retdict def JD_extr():
fnames = [ fname for fname in os.listdir("./") if fname.endswith(".html") ]
fw = codecs.open("tmp_jd_haitou_clean.csv","w","utf-8")
res = []
for fname in fnames[1:500]:
tmp = []
retdict = get_jdstr(fname)
res.append(retdict)
for k,v in retdict.iteritems():
tmp.append(v)
fw.write(" , ".join(tmp)+"\n")
fw.write("==="*20+"\n")
print fname,"done!"
return res def change2html():
fnames = [ fname for fname in os.listdir("./") if fname.endswith(".txt") ]
for fname in fnames:
cmd = "mv "+str(fname) +" "+fname[:-3]+"html"
print cmd
os.system(cmd) def store2mongodb():
client = MongoClient("localhost",27017)
db = client.JD_Haitou documents = JD_extr()
for d in documents:
db.haitouJD.insert(d) mycol = db["haitouJD"]
print mycol.count() def split_jd_test_data(fname='./tmp_jd_haitou_clean.csv'):
fw = codecs.open('./split_jd_res.csv','w','utf-8')
fr = codecs.open(fname,'r','utf-8')
indexurl = re.compile("http://xyzp.haitou.cc/article/\d+.html")
for line in fr:
if indexurl.search(line):
url = indexurl.search(line).group()
cnt = '' #默认为1
fw.write(url+"\t"+cnt+"\n")
fr.close()
fw.close() if __name__ == "__main__":
   JD_extr() # 抽取后存入文件
store2mongodb()
split_jd_test_data()
print "done"

使用bs4对海投网内容信息进行提取并存入mongodb数据库的更多相关文章

  1. 怎样从外网访问内网MongoDB数据库?

    本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...

  2. 基于Python爬虫采集天气网实时信息

      相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10- ...

  3. Node.js爬虫-爬取慕课网课程信息

    第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...

  4. 裸辞两个月,海投一个月,从Android转战Web前端的求职之路

    前言 看到这个标题的童鞋,可能会产生两种想法: 想法一:这篇文章是标题党 想法二:Android开发越来越不景气了吗?前端越来越火了吗? 我一向不喜欢标题党,标题中的内容是我的亲身经历.我是2016年 ...

  5. Python爬虫项目--爬取自如网房源信息

    本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http:/ ...

  6. 使用echarts生成海友网企业全国分布地图

    不分类别的效果 不同分类的分布效果图 从海友网获取各个企业名单保存进mysql cmfishhelper.py 从下列网址得到各个企业名片的网址保存进表cmfish cds = get_cds() h ...

  7. Thymeleaf+SpringBoot+Mybatis实现的齐贤易游网旅游信息管理系统

    项目简介 项目来源于:https://github.com/liuyongfei-1998/root 本系统是基于Thymeleaf+SpringBoot+Mybatis.是非常标准的SSM三大框架( ...

  8. 如何利用BeautifulSoup选择器抓取京东网商品信息

    昨天小编利用Python正则表达式爬取了京东网商品信息,看过代码的小伙伴们基本上都坐不住了,辣么多的规则和辣么长的代码,悲伤辣么大,实在是受不鸟了.不过小伙伴们不用担心,今天小编利用美丽的汤来为大家演 ...

  9. 如何利用Xpath抓取京东网商品信息

    前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~ HTML文件其实就是由一组尖括号构成的 ...

随机推荐

  1. note: declarations in dependent base ‘std::basic_ios<char>’ are not found by unqualified lookup

    错误信息如题所示. 修改前: template< typename _CharT, typename _Traits = std::char_traits<_CharT> > ...

  2. MySQL删除重复记录只保留一条

    删除表中重复记录,只保留一条: delete from 表名 where 字段ID in (select * from (select max(字段ID) from 表名 group by 重复的字段 ...

  3. Lucene 对文档打分的规则整理记录

    摘引自:http://www.cnblogs.com/forfuture1978/archive/2010/02/08/1666137.html Lucene的搜索结果默认按相关度排序,这个相关度排序 ...

  4. jquery layer弹窗弹层插件 小巧强大

    /* 先去官网下载最新的js  http://sentsin.com/jquery/layer/ ①引用jquery ②引用layer.min.js */ 触发弹层的事件可自由绑定,如: $('#id ...

  5. 怎么用OCR图文识别软件在MS Office中创建PDF文件

    ABBYY PDF Transformer+是一款可创建.编辑及将PDF文件转换为其他可编辑格式的OCR图文识别软件,不仅可以从纸质文档.图像文件和任何其他流行格式创建PDF文件(相关文章请参考如何从 ...

  6. Java 实现奇数阶幻方的构造

    一.设计的流程图如下所示 二.Java 语言的代码实现 package MagicSquare; //奇数幻方的实现 public class Magic_Odd { //n 为幻方的阶数 publi ...

  7. unity,UNITY_PROJ_COORD和tex2Dproj

    看ProjectorMultiply.shader,有这么一句: fixed4 texS = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow)); ...

  8. Android Afinal框架(二)

    框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity Final ...

  9. Java的大数操作分为BigInteger和BigDecimal

    Java的大数操作分为BigInteger和BigDecimal,但这两给类是分开使用的,有时候在编程的时候显得略微繁琐,现在编写了一个将二者合二为一的大数操作类. 大数操作类代码如下: 1 pack ...

  10. fiddler filter 过滤css 图片等

    找到 request header->Show only if yrl contains: REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav ...