使用bs4对海投网内容信息进行提取并存入mongodb数据库
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数据库的更多相关文章
- 怎样从外网访问内网MongoDB数据库?
本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...
- 基于Python爬虫采集天气网实时信息
相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10- ...
- Node.js爬虫-爬取慕课网课程信息
第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...
- 裸辞两个月,海投一个月,从Android转战Web前端的求职之路
前言 看到这个标题的童鞋,可能会产生两种想法: 想法一:这篇文章是标题党 想法二:Android开发越来越不景气了吗?前端越来越火了吗? 我一向不喜欢标题党,标题中的内容是我的亲身经历.我是2016年 ...
- Python爬虫项目--爬取自如网房源信息
本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http:/ ...
- 使用echarts生成海友网企业全国分布地图
不分类别的效果 不同分类的分布效果图 从海友网获取各个企业名单保存进mysql cmfishhelper.py 从下列网址得到各个企业名片的网址保存进表cmfish cds = get_cds() h ...
- Thymeleaf+SpringBoot+Mybatis实现的齐贤易游网旅游信息管理系统
项目简介 项目来源于:https://github.com/liuyongfei-1998/root 本系统是基于Thymeleaf+SpringBoot+Mybatis.是非常标准的SSM三大框架( ...
- 如何利用BeautifulSoup选择器抓取京东网商品信息
昨天小编利用Python正则表达式爬取了京东网商品信息,看过代码的小伙伴们基本上都坐不住了,辣么多的规则和辣么长的代码,悲伤辣么大,实在是受不鸟了.不过小伙伴们不用担心,今天小编利用美丽的汤来为大家演 ...
- 如何利用Xpath抓取京东网商品信息
前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~ HTML文件其实就是由一组尖括号构成的 ...
随机推荐
- MFC应用程序框架(转)
对于程序员来说,如果要提高编程效率,一个好用的,功能强大的并且可以得心应手使用的编程工具往往会给我们程序员带来莫大的方便.其实对于现在的编程工具来说,使用哪一种工具都不是问题的关键,重要的是你能够使用 ...
- Android Apk反编译得到Java源代码
大家做Android开发,看到别人应用里一些好的功能,是不是很想得到源码,借鉴一下?既然Android是用JAVA开发的,那么我们就能很容易的通过反编译的到应用的源代码.下面我简单介绍下应该怎么操作. ...
- 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf3.html 最大化 AIX 上的 Java 性能,第 ...
- CSS3弹性盒模型之box-orient & box-direction
Css3引入了新的盒模型——弹性盒模型,其实上一篇文章已经讲到了一个box-flex,今天来讲讲另外的两个弹性盒模型属性box-orient 和 box-direction. 1.box-origen ...
- 【转】ASP.NET服务器控件使用之MultiView和View
MultiView 和 View 控件和制作出选项卡的效果,MultiView 控件是一组 View 控件的容器.使用它可定义一组 View 控件,其中每个 View 控件都包含子控件. 如果要切换视 ...
- 【Reporting Services 报表开发】— 页码编列
一.打开 SQL Server Business Intelligence Development Studio,新建项目—>商业智能项目—> 报表服务器项目,命名为CH4 二.在报表文件 ...
- @media_screen
html,body{ margin:0; padding:0; }body{ background:#0f0;} /* @media screen and (min-width: 800px)and( ...
- CGI相关概念
common gateway interface 通用网关接口 可以让客户端从浏览器向执行在服务器上的程序请求数据.CGI描述了客户端和服务器程序之间传输数据的一种标准. 编程语言perl是一种被广泛 ...
- [svn] linux 下svn服务器的搭建
1. 下载svn(subversion) yum install subversion 2.查看svn位置(其实看不看都无所谓) 3.创建svn版本库目录 svnadmin create /home/ ...
- oracle分析函数 之分组累加求和
select s.slice_date_to ,s.made_id ,sum(s.steup_count)over(partition by s.made_id order by s.slice_da ...