Python爬虫之糗事百科段子写入MySQL数据库

在《Python爬取糗事百科段子》这篇文章中,我们获取到了每一个段子的内容(content)、作者(auth)、作者主页(home)、点赞数(votes)、评论数(comments)、段子地址(content_href)等信息,现在我们只需要根据以上字段名,创建数据库表,将信息逐条写入数据库就可以了。上代码!Python爬虫之糗事百科段子写入MySQL数据库

# _*_ coding:utf-8 _*_

import requests

from bs4 import BeautifulSoup

import MySQLdb

import re

connect=MySQLdb.connect(host="localhost",user='root',passwd='',port=3306,charset='utf8')

cursor=connect.cursor()

def create_sql(cursor=cursor):

#用于创建数据库

sql='create database if not exists qiushibaike default charset=utf8'

cursor.execute(sql)

print u'创建数据库'

sql='use qiushibaike'

cursor.execute(sql)

sql='''create table if not exists info(

id int not null primary key auto_increment,

content varchar(500) not null ,

auth varchar(20) not null ,

votes int not null,

comms int not null,

home varchar(50) not null ,

content_href varchar(50) not null )

default charset=utf8

'''

cursor.execute(sql)

print u'创建数据表'

defget_content(url,connect=connect,cursor=cursor):

#用于获取段子信息,并将信息写入数据库

sql='use qiushibaike'

cursor.execute(sql)

print u'选择qiushibaike 数据库'

headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

#url='https://www.qiushibaike.com/8hr/page/2/'

html=requests.get(url,headers=headers).content

soup=BeautifulSoup(html,'lxml')

div=soup.find_all('div',attrs={'class':'article block untagged mb15'})

#获取段子所在的标签块

for item in div:

auth=item.find('h2').get_text()

print auth

#获取作者信息

home=item.find('a')['href']

home='https://www.qiushibaike.com/'+home

print home

#作者主页

content_href=item.find('a',attrs={'class':'contentHerf'})['href']

content_href='https://www.qiushibaike.com/'+content_href

print content_href

#段子页面

content=item.find('div',attrs={'class':'content'})

span=content.find('span').get_text()

print span

#获取段子内容

stats=item.find('div',attrs={'class':'stats'}).get_text().replace(' ','')

print stats

#获取评论数、点赞数

ss=re.findall('d+',stats)

if ss:

votes=ss[0]

comms=ss[1]

else:

votes=0

comms=0

print votes,comms

#点赞数、评论数

sql='insert into info (content,auth,votes,comms,home,content_href )values("%s","%s","%s","%s","%s","%s")'%(span,auth,votes,comms,home,content_href)

#print sql

try:

cursor.execute(sql)

print u'正在向数据库插入数据'

connect.commit()

except Exception,e:

print u'发生异常',Exception,e

##捕捉异常信息,有的字段中有特殊符号,会导致数据写入数据库失败

## raw_input(u'按enter键浏览下一条')

## print ' '

## ##边看段子,边将数据写入数据库。可以注释掉

def main():

create_sql()

n=0

while n<30:

#这里只抓取10页,可根据需要设置n值

n=n+1

page=str(n)

print u'正在获取第%s页'%(page)

url='https://www.qiushibaike.com/8hr/page/%s/'%(page)

#print url

#抓取第n页的段子

get_content(url)

if __name__ =='__main__':

main()

Python爬虫之糗事百科段子写入MySQL数据库

Python爬虫之糗事百科段子写入MySQL数据库

源码 群 960410445  

Python爬虫之糗事百科段子写入MySQL数据库

运行程序,我们就可以在数据库中看到所有的段子了。之所以写入数据库,是便于以后更好的使用这些数据。比如找出点赞数大于5000的段子,根据段子手发的段子数以及其点赞数、评论数,分析谁是最热的段子手,等等诸如此类的统计分析。当然还会有更有用的地方,这个我们以后会讲到!

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/85230905