使用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文件其实就是由一组尖括号构成的 ...
随机推荐
- 向左对齐的Gallery
系统自带的Gallery选中的item总是在组件的中间.但是有些时候我们需要把选中的元素放在左边或者是Gallery一出来就要放在左边.修改Gallery靠左对齐的思路:1.Gellary总是对cen ...
- Uinty3d 镜面反射代码
镜面反射代码 文件名MirrorReflection.cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- LVM磁盘管理
http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html Linux LVM硬盘管理及LVM扩容 LVM磁盘管理 一.LVM简介... ...
- jQuery.fn.extend与jQuery.extend
jQuery.extend(),是扩展的jQuery这个类. 假设我们把jQuery这个类看成是人类,能吃饭能喝水能跑能跳,现在我们用jQuery.extend这个方法给这个类拓展一个能唱歌的技能.这 ...
- 关于ASP.NET MVC4 Web API简单总结
原文地址:http://www.cnblogs.com/lei2007/archive/2013/02/01/2888706.html wcf web api 和 asp.net web api , ...
- 事件、委托、委托方法的总结(使用EventHandler<>)
在C#中,定义事件.委托.委托方法可以使用类库内的EventHandler泛型委托来定义事件.并根据该泛型委托定义实现方法: 同样您也可以自定义委托 来定义事件以及 根据自定义的委托来定义实现事件的方 ...
- 伪类选择器:root的妙用
css3的元素旋转功能非常强大,也非常吸引人,但是很多时候因为浏览器使用率的问题,我们必需要想办法兼容一些低版本的浏览器,特别是ie这朵奇葩. 想要实现元素旋转本来很简单的一个属性就能实现,那就是tr ...
- PIP安装Python的scipy,scrapy等包出现“failed building wheel for xxx”问题解决办法
1.在这里下载对应的.whl文件,注意别改文件名! http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml Ctrl + F,输入lxml,找到下面这段 Lxm ...
- MySQL explain key_len 大小的计算
总结: 变长字段需要额外的2个字节,固定长度字段不需要额外的字节.而null都需要1个字节的额外空间,所以以前有个说法:索引字段最好不要为NULL,因为NULL让统计更加复杂,并且需要额外一个字节的存 ...
- 怎么利用WinPE恢复系统注册表?
我们的电脑总是会遇到各种各样的问题,最好用的方式就是电脑重装,重装系统的方式有很多,光盘安装.硬盘安装.U盘安装等.但是碰到电脑系统瘫痪无法启动,甚至连安全模式也进不了的时候,你的光盘.硬盘就没有用处 ...