xx百科词条点评爬虫项目介绍
【摘要】 该爬虫项目实现对xx百科网站中任意文本数据进行爬取后保存到本地,并存储在数据库中便于查看。
1·项目简介:
1.该爬虫项目实现对xx百科网站中任意文本数据进行爬取后保存到本地,并存储在数据库中便于查看。
2.该程序能将网站中的文字,评论数与点赞数量爬取下来并保存到mysql中的pachong数据库中的qiushibaike的表中。
2·程序步骤:
首先先进入网站的第一页,然后将网站中各个词条的标签头爬取下来,然后按照标签头进入不同的网页再将网页中的词条内容,点赞数,评论数保存下来并存去到数据库中,然后在切换网页爬取各个词条的标签头,重复操作。
3·操作注意事项:
1.由于程序数据保存需要连接到数据库,所以程序中数据库连接信息需要与mysql中的数据库属性一致(连接名,用户密码,数据库名称)
2.本地创建数据库时各个变量类型设置:num(int),citiao(varchar),dianzanshu(int),pinglunshu
(int)
3.数据库varchai类型的数据的字符集设置:utf8,排序规则:utf8_general_ci
代码如下:
# -*- coding: utf-8 -*- """ Created on Mon Sep 18 22:57:19 2017 @author: 失序 """ import re import urllib.request from bs4 import BeautifulSoup import urllib.parse import pymysql class Spider(object): def __init__(self): self.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36r)' self.headers = {'User-Agent': self.user_agent} def start1(self,url): request=urllib.request.Request(url,headers=self.headers) data1=urllib.request.urlopen(request) datab = [] soup = BeautifulSoup(data1, 'html.parser', from_encoding='utf-8') link3 = soup.findAll('a',attrs={'href':True}) for a in link3: ob = (re.match('/article/\d\d\d\d\d\d\d\d\d',a.attrs['href'])) #正则表达式的应用 if(ob): datab.append(ob.group()) for x in datab: if not x in dataname: dataname.append(x) #print(link3) def start(self,url): try: request=urllib.request.Request(url,headers=self.headers) data=urllib.request.urlopen(request) datas=[] dataa=[] soup = BeautifulSoup(data, 'html.parser', from_encoding='utf-8') link1 = soup.find_all('div',class_='content') #找div标签中带content的标签 link2 = soup.find_all('i',class_='number') #找i标签中带number的标签 #print(link1,link2) for link in link1: datas.append(link.get_text()) #提取标签正文 for link in link2: dataa.append(link.get_text()) #for link in link3: # datab.append(link["id"]) return datas,dataa except Exception as e: print(e) def save(self,i,ff,dd): # 打开数据库连接 db = pymysql.connect("localhost","root","123","pachong",charset="utf8") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() insert_color = ("INSERT INTO qiushibaike(num,citiao,dianzanshu,pinglunshu)" "VALUES(%s,%s,%s,%s)") data_color = (i,ff[0].replace("\n",""),dd[0],dd[1]) try: cursor.execute(insert_color,data_color) db.commit() except: print('该数据已插入数据库') # print '******完成此条插入!' db.close() print (str(i)+'爬取数据并插入mysql数据库完成...\n') url='https://www.qiushibaike.com' url1=url + '/text' dataname=[] spider=Spider() spider.start1(url1) #将网页中段子的标签头爬取下来 i=0 cc=1 while True: try: url2 = 'https://www.qiushibaike.com' + dataname[i] ff,dd = spider.start(url2) i += 1 if(len(ff[0].replace("\n",""))>=20): spider.save(i,ff,dd) #每次爬取一条记录 except Exception as e: try: cc += 1 url1=url + '/text/page/' + str(cc) spider=Spider() spider.start1(url1) except Exception as e: break;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)