今天,来介绍一下听起来很牛,其实的确牛的爬虫技术!(当然,我现在也学习者,分享一下学习经验)
废话不多少,先直接看效果
import requests import pymysql def waitSql(bookName,bookLink): bookName = str(bookName).replace(' ', '') bookName = str(bookName).replace('\r\n', '') db=pymysql.connect(host='localhost', port=3306, user='root', passwd='123', db='booklog',charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 sql="insert into csdnbook(bookName,linkURL) VALUE('"+str(bookName)+"','"+str(bookLink)+"')" print(sql) cursor.execute(sql) db.commit() cursor.close() db.close() return def getDiv(html): ####截取主要的文章链接块# divClass = html.find("article_list") divClassEnd=html.find("papelist",divClass)-38 ############截取到文章的块以后,把HTML内容重新赋值############# html=html[divClass:divClassEnd] #print(html) return html def Listadd(html): #进行html解析(首页解析) html=str(html) #获取文章块的文章(唯一标识哦!) divClass=html.find("article_list") #############循环查找每一个DIV(article_title)标签和 A标签里名的名字###################### while(divClass>= -1): ##寻找主要的链接和文章名字的块,而不是全部链接 divClass=html.find('link_title',divClass) #寻找链接文章名字 if (divClass <= -1): break a_=html.find('divClass)+9 _a=html.find('>',a_)-1 #文章名字从链接获取完成以后开始 名字 所以此刻的位置就是 _a +2的位置 # name_=html.find('',_a)+3 # _name=html.find(' bookName_start = html.find('', _a) + 2 bookName_end = html.find('<', bookName_start) #链接的的截取 url=html[a_:_a] #截取文章名字 Bookname=html[bookName_start:bookName_end] divClass = html.find("bookName_end) url="http://blog.csdn.net"+url #linkList.append(url) ###########查看获取到的数据########### ##去掉所有空格 Bookname.replace(" ","") url.replace(" ", "") #print(Bookname+url) ############添加到数据库########### waitSql(Bookname,url) def fileWarit(html,i): file=open(str(i)+'.html','w+',encoding='utf-8') file.write(html) file.close() #################请求循环,到25页,(分页请求)############### def geturl(): i=1 while(i<=25): url="http://blog.csdn.net/u010870518/article/list/"+str(i) print(url) # # 写入User Agent信息 # head = {} # head[ # 'User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' # 创建Request对象 web_date = requests.put(url) #把网页格式内容转换为 utf-8 web_date.encoding = 'utf-8' #####获取网页内容## html = web_date.text #fileWarit(html,i) ####使用 getDiv 方法把 html中文章的DIV 截取到# html = getDiv(html) #########链接添加到数据库########## Listadd(html) i=i+1 ###############################程序执行##################### geturl() #fileWarit(html)
import pymysql import urllib.request import requests import time #######用来存储,数据库查询到的数据,名字,链接,时间############### NameList=[] urlList=[] datetime=[] #获取数据中,由CSDN 爬取到的文章 名字和链接 def waitSql(): db=pymysql.connect(host='localhost', port=3306, user='root', passwd='admin', db='booklog',charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 sql="select bookName,linkURL,dateTime from csdnbook" cursor.execute(sql) #获取数据库查询的数据 results=cursor.fetchall() for row in results: NameList.append(row[0]) urlList.append(row[1]) datetime.append(row[2]) #数组存数据 cursor.close() db.close() return def getDiv(html): ####截取主要的文章链接块# divClass = html.find('') divClassEnd=html.find('