python新闻爬虫_Python 网络爬虫(新闻收集脚本)

该代码实现了一个简单的智能爬虫,用于从百度百家网站抓取文章信息,包括标题、作者、日期、简介和内容。通过正则表达式匹配网页内容,然后将数据存储到MySQL数据库的news表中。整个过程涉及网络请求、正则解析、数据库操作等技术。
摘要由CSDN通过智能技术生成

#百度百家文章收集

importreimporturllib.requestimportpymysql.cursors#数据库配置参数

config ={‘host‘: ‘localhost‘,‘port‘: ‘3310‘,‘username‘: ‘woider‘,‘password‘: ‘3243‘,‘database‘: ‘python‘,‘charset‘: ‘utf8‘}#数据表创建语句

‘‘‘CREATE TABLE `news` (

`id` int(6) unsigned AUTO_INCREMENT NOT NULL,

`title` varchar(45) NOT NULL,

`author` varchar(12) NOT NULL,

`date` varchar(12) NOT NULL,

`about` varchar(255) NOT NULL,

`content` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;‘‘‘

#文章对象

classArticle(object):

title=None

author=None

date=None

about=None

content=Nonepass

#正则表达式

patArticle = ‘

patTitle = ‘

\s*

(.+)

‘ #匹配文章标题

patAuthor = ‘

\s*(.+)‘ #匹配文章作者

patDate = ‘(.+)‘ #匹配发布日期

patAbout = ‘

(.+)
‘ #匹配文章简介

patContent = ‘

((.|\s)+)‘ #匹配文章内容

patCopy = ‘

(.|\s)+‘ #匹配版权声明

patTag = ‘(

#文章信息

defcollect_article(url):

article=Article()

html= urllib.request.urlopen(url).read().decode(‘utf8‘)

article.title=re.findall(patTitle, html)[0]

article.author=re.findall(patAuthor, html)[0]

article.date=re.findall(patDate, html)[0]

article.about=re.findall(patAbout, html)[0]

content=re.findall(patContent, html)[0]

content= re.sub(patCopy, ‘‘, content[0])

content= re.sub(‘

‘, ‘\n‘, content)

content= re.sub(patTag, ‘‘, content)

article.content=contentreturnarticle#储存信息

defsave_article(connect, article):

message=Nonetry:

cursor=connect.cursor()

sql= "INSERT INTO news (title, author, date, about, content) VALUES ( %s, %s, %s, %s, %s)"data=(article.title, article.author, article.date, article.about, article.content)

cursor.execute(sql, data)

connect.commit()exceptException as e:

message=str(e)else:

message=article.titlefinally:

cursor.close()returnmessage#抓取链接

home = ‘http://baijia.baidu.com/‘ #百度百家首页

html = urllib.request.urlopen(home).read().decode(‘utf8‘) #获取页面源码

links = re.findall(patArticle, html)[0:10] #每日热点新闻#连接数据库

connect =pymysql.connect(

host=config[‘host‘],

port=int(config[‘port‘]),

user=config[‘username‘],

passwd=config[‘password‘],

db=config[‘database‘],

charset=config[‘charset‘]

)for url inlinks:

article= collect_article(url) #收集文章信息

message = save_article(connect,article) #储存文章信息

print(message)passconnect.close()#关闭数据库连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值