python 爬虫研究

2017-10-17  本文已影响6人  飞鱼ll

爬取糗事百科段子

代码

# -*- coding:utf-8 -*-
import MySQLdb
import urllib
import urllib2
import re

# 打开数据库连接
db = MySQLdb.connect("localhost","root","","py-test",charset='UTF8')
#MAC MAMP环境下
#db = MySQLdb.connect("localhost","root","root","py-test",port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset='UTF8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()

page = 1
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
try:
    request = urllib2.Request(url,headers = headers)
    response = urllib2.urlopen(request)
    content = response.read().decode('utf-8')
    pattern = re.compile('<div.*?author clearfix">.*?<a.*?<h2>(.*?)</h2>.*?<div.*?'+
                         'content">.*?<span>(.*?)</span>.*?</div>.*?<span.*?'+'stats-vote">.*?<i.*?>(.*?)</i>.*?<i.*?>(.*?)</i>',re.S)
    items = re.findall(pattern,content)
    for item in items:
        print item[0],item[1],item[2],item[3]
        print ("name: %s---" % item[0]);
        # SQL 插入语句
        sql = "INSERT INTO baike(name, content, vote, comments) VALUES ('%s', '%s', '%s', '%s')" % (item[0],item[1], item[2], item[3])
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
except urllib2.URLError, e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason
    # 发生错误时回滚
    db.rollback()

# 关闭数据库连接
db.close()

运行结果



/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/admin/PycharmProjects/untitled2/baike

天然18cc



09年,在读大二,家里出事,没钱付学费,辍学在武汉,连回家的钱都没有!手机没钱交话费停机!全身只有卖掉手机的300块,做工地小工一天60,十天一结算,每天早上吃一碗两块五的热干面,打包一碗,留着中午吃,晚上不吃!后来学校保安介绍在一个武汉理工大到对面的楼盘工地上干了两个月的装修活,白天做事,晚上没有地方睡,就睡在天台,白天将近40度的高温,晒的天台地面像铁板烧,没办法,只有铺一块石膏板就睡,边睡边流汗,旁边要放一桶水,全部淋湿自己,一直到下半夜稍微凉一点才能睡着,第二天五点多,太阳就照亮,连阴处
…
1754 113
name: 
天然18cc
---

伊伊wan



今天卖货,顾客问多少钱,我说:上面有吊牌,吊牌价的6折。顾客看了看209的吊牌,笑着对我说,便宜点吧,8折卖不?我表现出很为难的样子,好吧好吧,赔钱卖给你了。

1219 16
name: 
伊伊wan
---


Process finished with exit code 0


数据库存储:

Paste_Image.png

未解决的问题:
中文字符存储失败

问题已解决
原因 sql 字符串换行的问题

        print sql
        print sql.replace('\n','')
        # 执行sql语句
        # sql = "INSERT INTO baike(name, content, vote, comments) VALUES ('苍老师首席女配音', '表弟小的时候特淘,天天就让舅舅收拾。一个字:惨!<br/>一次,表弟又挨揍了,哭的呜哩哇啦的,外婆敢来劝阻。舅舅气愤的说,:这小子三天不打,真上房揭瓦了,,<br/>外婆:不就是揭瓦么,小孩子,别打伤了。<br/>舅舅:揭瓦小事,可屋里隔壁新婚小媳妇在洗澡!<br/>外婆:隔壁浴室那么偏,你怎么发现的?<br/>舅舅:瓦片掉下来正好砸我脖子上……<br/>外婆顿了一下,举起了拐杖砸舅舅!', '2808', '34')"
        cursor.execute(sql.replace('\n',''))
INSERT INTO baike(name, content, vote, comments) VALUES ('
我有前女友!
', '


昨天晚上跟我爸喝酒喝大了,断片那种,今天早上醒来觉得浑身疼,睁开眼一看床单上星星点点都是血,身上大小伤疤十几个,身上的几个大关节基本都破着皮,脚也不敢动,一看肿的跟馒头似的,一瘸一拐起来问我妈,才知道原因,事情大体是这样的:当时我和我爸都喝大了,两个人不知为啥吵吵起来了,然后我爸一激动把我揍了,我好像要还手来着,拳头都举到后脑勺了,又放下了,跑着出了家门,给我妈急坏了,找了我半个多小时,找到我的时候,我正跟对着一棵树拳打脚踢那�[捂脸]�[捂脸]�[捂脸],要拉我回家,我死活不肯啊,抱着树就在那
…
', '455', '8')
INSERT INTO baike(name, content, vote, comments) VALUES ('我有前女友!', '昨天晚上跟我爸喝酒喝大了,断片那种,今天早上醒来觉得浑身疼,睁开眼一看床单上星星点点都是血,身上大小伤疤十几个,身上的几个大关节基本都破着皮,脚也不敢动,一看肿的跟馒头似的,一瘸一拐起来问我妈,才知道原因,事情大体是这样的:当时我和我爸都喝大了,两个人不知为啥吵吵起来了,然后我爸一激动把我揍了,我好像要还手来着,拳头都举到后脑勺了,又放下了,跑着出了家门,给我妈急坏了,找了我半个多小时,找到我的时候,我正跟对着一棵树拳打脚踢那�[捂脸]�[捂脸]�[捂脸],要拉我回家,我死活不肯啊,抱着树就在那…', '455', '8')
INSERT INTO baike(name, content, vote, comments) VALUES ('
秋去冬来雪飞晚
', '


带女儿逛街:老爸,我要吃蛋糕。<br/>过了一会:老爸,我要吃肯德基。<br/>……<br/>老爸:尼玛,就知道吃,吃,一会功夫被你吃掉五十块了。<br/>女儿:真是小气鬼,我帮你省了二十万,我都没说,吃了你五十块,你到喊起来了。<br/>老爸:你啥时给我省了二十万?<br/>女儿:昨天外婆说的,要不你跟妈妈结婚前就怀上了我,至少跟你要二十万彩礼!你说是不是我给你省下二十万?

', '1400', '11')
INSERT INTO baike(name, content, vote, comments) VALUES ('秋去冬来雪飞晚', '带女儿逛街:老爸,我要吃蛋糕。<br/>过了一会:老爸,我要吃肯德基。<br/>……<br/>老爸:尼玛,就知道吃,吃,一会功夫被你吃掉五十块了。<br/>女儿:真是小气鬼,我帮你省了二十万,我都没说,吃了你五十块,你到喊起来了。<br/>老爸:你啥时给我省了二十万?<br/>女儿:昨天外婆说的,要不你跟妈妈结婚前就怀上了我,至少跟你要二十万彩礼!你说是不是我给你省下二十万?', '1400', '11')

屏幕快照 2017-10-18 下午5.03.40.png

参考文章:
http://cuiqingcai.com/990.html
https://www.zhihu.com/question/47883186

上一篇下一篇

猜你喜欢

热点阅读