日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python爬蟲使用正則爬取網站的實現

瀏覽:52日期:2022-07-15 13:19:27

本文章的所有代碼和相關文章, 僅用于經驗技術交流分享,禁止將相關技術應用到不正當途徑,濫用技術產生的風險與本人無關。

本文章是自己學習的一些記錄。歡迎各位大佬點評!

首先

今天是第一天寫博客,感受到了博客的魅力,博客不僅能夠記錄每天的代碼學習情況,并且可以當作是自己的學習筆記,以便在后面知識點不清楚的時候前來復習。這是第一次使用爬蟲爬取網頁,這里展示的是爬取豆瓣電影top250的整個過程,歡迎大家指點。

這里我只爬取了電影鏈接和電影名稱,如果想要更加完整的爬取代碼,請聯系我。qq 1540741344 歡迎交流

開發工具: pycharm、chrome

分析網頁

在開發之前你首先要去你所要爬取的網頁提取出你要爬取的網頁鏈接,并且將網頁分析出你想要的內容。

在開發之前首先要導入幾個模塊,模塊描述如下,具體不知道怎么導入包的可以看我下一篇內容

python爬蟲使用正則爬取網站的實現

首先定義幾個函數,便于將各個步驟的工作分開便于代碼管理,我這里是分成了7個函數,分別如下:

@主函數入口

if __name__=='__main__': #程序執行入口 main()

@捕獲網頁html內容 askURL(url)

這里的head的提取是在chrome中分析網頁源碼獲得的,具體我也不做過多解釋,大家可以百度

def askURL(url): #得到指定網頁信息的內容 #爬取一個網頁的數據 # 用戶代理,本質上是告訴服務器,我們是以什么樣的機器來訪問網站,以便接受什么樣的水平數據 head={'User-Agent':'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 84.0.4147.89 Safari / 537.36'} request=urllib.request.Request(url,headers=head) #request對象接受封裝的信息,通過urllib攜帶headers訪問信息訪問url response=urllib.request.urlopen(request) #用于接收返回的網頁信息 html=response.read().decode('utf-8') #通過read方法讀取response對象里的網頁信息,使用“utf-8” return html

@將baseurl里的內容進行逐一解析 getData(baseURL)這里面的findlink和findname是正則表達式,可以首先定義全局變量

findlink=r’<a class='' href='http://m.b3g6.com/bcjs/(.*?)'’findname=r’<span class='title'>(.*?)</span>’

def getData(baseURL): dataList=[] #初始化datalist用于存儲獲取到的數據 for i in range(0,10): url=baseURL+str(i*25) html=askURL(url) #保存獲取到的源碼 soup=BeautifulSoup(html,'html.parser') #對html進行逐一解析,使用html.parser解析器進行解析 for item in soup.find_all('div',class_='item'): #查找符合要求的字符串 ,形成列表,find_all是查找所有的class是item的div data=[] #初始化data,用于捕獲一次爬取一個div里面的內容 item=str(item) #將item數據類型轉化為字符串類型 # print(item) link=re.findall(findlink,item)[0]#使用re里的findall方法根據正則提取item里面的電影鏈接 data.append(link)#將網頁鏈接追加到data里 name=re.findall(findname,item)[0]#使用re里的findall方法根據正則提取item里面的電影名字 data.append(name)#將電影名字鏈接追加到data里 # print(link) # print(name) dataList.append(data) #將捕獲的電影鏈接和電影名存到datalist里面 return dataList #返回一個列表,里面存放的是每個電影的信息 print(dataList)

@保存捕獲的數據到excel saveData(dataList,savepath)

def saveData(dataList,savepath): #保存捕獲的內容到excel里,datalist是捕獲的數據列表,savepath是保存路徑 book=xlwt.Workbook(encoding='utf-8',style_compression=0)#初始化book對象,這里首先要導入xlwt的包 sheet=book.add_sheet('test',cell_overwrite_ok=True) #創建工作表 col=['電影詳情鏈接','電影名稱'] #列名 for i in range(0,2): sheet.write(0,i,col[i]) #將列名逐一寫入到excel for i in range(0,250): data=dataList[i] #依次將datalist里的數據獲取 for j in range(0,2): sheet.write(i+1,j,data[j]) #將data里面的數據逐一寫入 book.save(savepath)

@保存捕獲的數據到數據庫

def saveDataDb(dataList,dbpath): initDb(dbpath) #用一個函數初始化數據庫 conn=sqlite3.connect(dbpath) #初始化數據庫 cur=conn.cursor() #獲取游標 for data in dataList: for index in range(len(data)): data[index]=’'’+data[index]+’' ’#將每條數據都加上'' #每條數據之間用,隔開,定義sql語句的格式 sql=’’’ insert into test(link,name) values (%s) ’’’%’,’.join (data) cur.execute(sql) #執行sql語句 conn.commit() #提交數據庫操作 conn.close() print('爬取存入數據庫成功!')

@初始化數據庫 initDb(dbpath)

def initDb(dbpath): conn=sqlite3.connect(dbpath) cur=conn.cursor() sql=’’’ create table test( id integer primary key autoincrement, link text, name varchar ) ’’’ cur.execute(sql) conn.commit() cur.close() conn.close()

@main函數,用于調用其他函數 main()

def main(): dbpath='testSpider.db' #用于指定數據庫存儲路徑 savepath='testSpider.xls' #用于指定excel存儲路徑 baseURL='https://movie.douban.com/top250?start=' #爬取的網頁初始鏈接 dataList=getData(baseURL) saveData(dataList,savepath) saveDataDb(dataList,dbpath)

點擊運行就可以看到在左側已經生成了excel和DB文件

python爬蟲使用正則爬取網站的實現

excel可以直接打開

python爬蟲使用正則爬取網站的實現

DB文件雙擊之后會在右邊打開

python爬蟲使用正則爬取網站的實現

到這里爬蟲的基本內容就已經結束了,如果有什么不懂或者想交流的地方可以加我qq 1540741344

以下附上整個代碼

import re #網頁解析,獲取數據from bs4 import BeautifulSoup#正則表達式,進行文字匹配import urllib.request,urllib.error #制定URL,獲取網頁數據import xlwtimport sqlite3findlink=r’<a class='' href='http://m.b3g6.com/bcjs/(.*?)'’findname=r’<span class='title'>(.*?)</span>’def main(): dbpath='testSpider.db' #用于指定數據庫存儲路徑 savepath='testSpider.xls' #用于指定excel存儲路徑 baseURL='https://movie.douban.com/top250?start=' #爬取的網頁初始鏈接 dataList=getData(baseURL) saveData(dataList,savepath) saveDataDb(dataList,dbpath)def askURL(url): #得到指定網頁信息的內容 #爬取一個網頁的數據 # 用戶代理,本質上是告訴服務器,我們是以什么樣的機器來訪問網站,以便接受什么樣的水平數據 head={'User-Agent':'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 84.0.4147.89 Safari / 537.36'} request=urllib.request.Request(url,headers=head) #request對象接受封裝的信息,通過urllib攜帶headers訪問信息訪問url response=urllib.request.urlopen(request) #用于接收返回的網頁信息 html=response.read().decode('utf-8') #通過read方法讀取response對象里的網頁信息,使用“utf-8” return html #返回捕獲的網頁內容,此時還是未處理過的def getData(baseURL): dataList=[] #初始化datalist用于存儲獲取到的數據 for i in range(0,10): url=baseURL+str(i*25) html=askURL(url) #保存獲取到的源碼 soup=BeautifulSoup(html,'html.parser') #對html進行逐一解析,使用html.parser解析器進行解析 for item in soup.find_all('div',class_='item'): #查找符合要求的字符串 ,形成列表,find_all是查找所有的class是item的div data=[] #初始化data,用于捕獲一次爬取一個div里面的內容 item=str(item) #將item數據類型轉化為字符串類型 # print(item) link=re.findall(findlink,item)[0]#使用re里的findall方法根據正則提取item里面的電影鏈接 data.append(link)#將網頁鏈接追加到data里 name=re.findall(findname,item)[0]#使用re里的findall方法根據正則提取item里面的電影名字 data.append(name)#將電影名字鏈接追加到data里 # print(link) # print(name) dataList.append(data) #將捕獲的電影鏈接和電影名存到datalist里面 return dataList #返回一個列表,里面存放的是每個電影的信息 print(dataList)def saveData(dataList,savepath): #保存捕獲的內容到excel里,datalist是捕獲的數據列表,savepath是保存路徑 book=xlwt.Workbook(encoding='utf-8',style_compression=0)#初始化book對象,這里首先要導入xlwt的包 sheet=book.add_sheet('test',cell_overwrite_ok=True) #創建工作表 col=['電影詳情鏈接','電影名稱'] #列名 for i in range(0,2): sheet.write(0,i,col[i]) #將列名逐一寫入到excel for i in range(0,250): data=dataList[i] #依次將datalist里的數據獲取 for j in range(0,2): sheet.write(i+1,j,data[j]) #將data里面的數據逐一寫入 book.save(savepath) #保存excel文件def saveDataDb(dataList,dbpath): initDb(dbpath) #用一個函數初始化數據庫 conn=sqlite3.connect(dbpath) #初始化數據庫 cur=conn.cursor() #獲取游標 for data in dataList: for index in range(len(data)): data[index]=’'’+data[index]+’' ’#將每條數據都加上'' #每條數據之間用,隔開,定義sql語句的格式 sql=’’’ insert into test(link,name) values (%s) ’’’%’,’.join (data) cur.execute(sql) #執行sql語句 conn.commit() #提交數據庫操作 conn.close() print('爬取存入數據庫成功!')def initDb(dbpath): conn=sqlite3.connect(dbpath) cur=conn.cursor() sql=’’’ create table test( id integer primary key autoincrement, link text, name varchar ) ’’’ cur.execute(sql) conn.commit() cur.close() conn.close()if __name__=='__main__': #程序執行入口 main()

到此這篇關于python爬蟲使用正則爬取網站的實現的文章就介紹到這了,更多相關python正則爬取內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩黄色av| 亚洲风情在线资源| 一区在线视频观看| 亚洲成人国产| 激情视频一区二区三区| 999视频精品| 一区二区三区视频免费观看| 亚洲成人国产| 蜜桃tv一区二区三区| 91成人精品视频| 人人爽香蕉精品| 日韩高清不卡在线| 国产精品99久久免费| 激情中国色综合| 天堂中文在线播放| 99精品视频在线观看免费播放| 欧美日韩黑人| 四虎精品一区二区免费| 国产精品地址| 日韩精品dvd| 午夜av一区| 综合色一区二区| 国产欧美在线| 成人欧美一区二区三区的电影| 国产超碰精品| 麻豆成人在线| 国产精品久久久久久久久免费高清 | 国产成人精品三级高清久久91| 国产麻豆一区二区三区| 老牛国内精品亚洲成av人片| 日本不良网站在线观看| 在线亚洲观看| 国产区精品区| 久久亚洲国产| 日韩国产91| 欧美男人天堂| 蜜桃av一区二区| 精品女同一区二区三区在线观看| 91精品韩国| 亚洲tv在线| 久久69成人| 亚洲成人三区| 国产亚洲一卡2卡3卡4卡新区| 国产精品mv在线观看| 久久人人99| 欧美日本不卡高清| 91看片一区| 香蕉久久久久久| 福利一区在线| 日韩欧美久久| sm久久捆绑调教精品一区| 在线一区免费观看| 欧美国产日本| 国产亚洲精品久久久久婷婷瑜伽| 国产情侣久久| 不卡在线一区| 国产精品乱战久久久| 国产精品av一区二区| 天堂俺去俺来也www久久婷婷| 精品一区91| 免播放器亚洲一区| 亚洲国产福利| 日本国产欧美| 婷婷中文字幕一区| 久久精品日韩欧美| 免费人成在线不卡| 久久蜜桃资源一区二区老牛| 热久久久久久| 一区二区自拍| 精品色999| 亚洲三级网站| 欧美综合另类| 精品一区二区三区的国产在线观看 | 亚洲专区一区| 成人午夜在线| 久久国产三级| 男女性色大片免费观看一区二区| 国产高清不卡| 国产精品v一区二区三区| 男人的天堂亚洲一区| 亚洲伊人av| 国产精品久久久久久久久久久久久久久 | 久久亚洲资源中文字| 久久福利毛片| 日韩精品永久网址| 久久99蜜桃| 日韩国产精品久久久| 亚洲激情社区| 色在线中文字幕| 久久中文在线| 欧美精品福利| 亚洲毛片在线| 精品在线99| xxxxx性欧美特大| 卡一卡二国产精品| 日韩1区2区日韩1区2区| 亚洲一区日韩| 激情偷拍久久| 青青青免费在线视频| 国产精东传媒成人av电影| 日本中文字幕一区二区视频 | 国产综合婷婷| 中文字幕一区久| 精品国产精品国产偷麻豆| 欧美日韩一区二区三区在线电影| 三级在线观看一区二区| 国产精品7m凸凹视频分类| 丝袜诱惑一区二区| 国产精品精品国产一区二区| 欧美国产免费| 久久影院一区二区三区| 日本欧美一区二区在线观看| 亚洲区国产区| 亚洲欧洲美洲国产香蕉| 日韩中文字幕91| 伊人久久亚洲影院| 一区在线免费观看| 国产综合婷婷| 欧美日韩国产一区精品一区| 99久久亚洲精品蜜臀| 99久久久久久中文字幕一区| 久久久久久久久久久9不雅视频| 视频二区不卡| 欧美亚洲在线日韩| 精品在线99| 国产亚洲网站| 日韩精品一级二级| 蜜桃久久av一区| 在线看片日韩| 日韩久久99| 久久国产视频网| 免费日韩成人| 国产a亚洲精品| 久久久蜜桃一区二区人| 国产高清一区二区| 日韩精品一区第一页| 免费久久99精品国产| 日韩专区视频网站| 国产伦乱精品| 国产色播av在线| 欧美日韩一二三四| 午夜在线视频观看日韩17c| 久久先锋影音| 日韩欧美中文字幕一区二区三区| 日本免费在线视频不卡一不卡二| 久久黄色影视| 91偷拍一区二区三区精品| 日韩精品欧美| 亚洲免费影视| 欧美日韩va| 欧美xxxx中国| 亚洲性图久久| 亚洲一级大片| 国产精品亚洲二区| 深夜福利视频一区二区| 狠狠色狠狠色综合日日tαg| 日韩中文字幕区一区有砖一区| 日韩精品一页| 精品国产a一区二区三区v免费| 久久狠狠婷婷| 亚洲免费观看高清完整版在线观| 免费在线成人| 久久狠狠婷婷| 婷婷视频一区二区三区| 老司机精品在线| 欧美精品一区二区久久| 97久久超碰| 日韩精品永久网址| 一区二区三区四区日韩| 欧美激情福利| 视频一区中文| 国产乱人伦丫前精品视频| 久久精品国产在热久久| 欧美 日韩 国产精品免费观看| 亚洲精品系列| 国产精品极品在线观看| 日韩精品网站| 日韩高清不卡在线| 色老板在线视频一区二区| 久久午夜精品一区二区| 麻豆久久久久久久| 婷婷丁香综合| 日韩精品2区| 日韩精选在线| 99精品视频在线| 国产伦理久久久久久妇女| 久久中文字幕二区| 日本a口亚洲| 亚洲91精品| 日本欧美大码aⅴ在线播放| 久久久久久黄| 国产三级一区| 亚洲成人三区| 精品国产一区二区三区噜噜噜| 99视频一区| 水蜜桃久久夜色精品一区| 亚洲区国产区| 四虎影视精品| 欧美aaaaaa午夜精品| 亚洲制服少妇|