Python入门案例

@作者博客

今天,来介绍一下听起来很牛,其实的确牛的爬虫技术!(当然,我现在也学习者,分享一下学习经验)

废话不多少,先直接看效果

代码如下:

文章URL爬取


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('

你可能感兴趣的:(java,Stone的博客,Chcvn)