python簡(jiǎn)單實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲-創(chuàng)新互聯(lián)

前言

? 在這一篇博客中,我會(huì)用python來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲。簡(jiǎn)單的爬取一下一些音樂網(wǎng)站、小說(shuō)網(wǎng)站的標(biāo)題、關(guān)鍵字還有摘要!所以這個(gè)爬蟲并不是萬(wàn)能爬,只針對(duì)符合特定規(guī)則的網(wǎng)站使用。(只使用于爬標(biāo)題、關(guān)鍵字和摘要的,所以只能爬在head標(biāo)簽中這三個(gè)信息都有的且meta標(biāo)簽中name參數(shù)在本文信息前面的網(wǎng)站。)希望大家看了這篇博客,能對(duì)大家學(xué)習(xí)爬蟲有些幫助?。ú⒉皇呛芨呱畹呐老x,很基礎(chǔ)?。。。?/p>成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的海滄網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!要用到的知識(shí)

? 要用到的知識(shí)都是比較簡(jiǎn)單的啦,基本上花點(diǎn)時(shí)間都能學(xué)會(huì)。

? 首先就是python的基礎(chǔ)語(yǔ)法啦,會(huì)用能看懂就好。(會(huì)有一些文件讀取的操作)

? 還有就是關(guān)于爬蟲的一些知識(shí)了:貪婪匹配和惰性匹配(re解析方式解析網(wǎng)頁(yè)源代碼)

? 還需要一丟丟前端的知識(shí):只需要大概看得懂html源代碼就行(知道是在干嘛的)

? 這些就差不多了(b站是最好的大學(xué)(主要是我懶,也沒時(shí)間寫這些))

爬蟲的具體實(shí)現(xiàn)

? 先拿一個(gè)網(wǎng)站做例子分析,打開酷狗官網(wǎng),右鍵點(diǎn)擊檢查:

紅框中的就是我們需要提取的信息啦。這還是很容易提取出來(lái)的。使用re模塊里面的貪婪匹配與惰性匹配,將想要的數(shù)據(jù)提取出來(lái)就好。例如:

obj = re.compile(r'(?P.*?).*?'
                  r'.*?)".*?>'
                  r'.*?)".*?>', re.S)

在上面我們只用了一次compile函數(shù)就完成了匹配。

? 但是我,我們需要提取的并不止是酷狗官網(wǎng),還有其他一些網(wǎng)站。上面代碼寫的規(guī)則并不適合一些網(wǎng)站,比如,一些網(wǎng)站把標(biāo)題放在最后面,關(guān)鍵字和摘要放在前面,那么我們就匹配不到想要的信息。這個(gè)也比較好解決,將一條compile拆成多條compile就行。

obj1 = re.compile(r'(?P.*?)', re.S)
    obj2 = re.compile(r'.*?)".*?>', re.S)
    obj3 = re.compile(r'.*?)".*?>', re.S)

? 下面是整個(gè)python源代碼(在源代碼里面使用了文件讀取將提取到的信息保存到文件里面):

import requests
import re
import csv

urls = []

# 分別是酷狗音樂、酷我音樂、網(wǎng)易云音樂、起點(diǎn)中文網(wǎng)、咪咕音樂、bilibili、qq音樂
urls.append("https://www.kugou.com/")
urls.append("http://www.kuwo.cn/")
urls.append("https://music.163.com/")
urls.append("https://www.qidian.com/")
urls.append("https://www.migu.cn/index.html")
urls.append("https://www.bilibili.com/")
urls.append("https://y.qq.com/")

# 打開csv文件
f = open("test.csv", mode="w", encoding="utf-8")
csvwriter = csv.writer(f)
csvwriter.writerow(["標(biāo)題","關(guān)鍵字","摘要"])

# 對(duì)所有網(wǎng)站進(jìn)行g(shù)et訪問(wèn),獲取源代碼后用re模塊將想要提取的內(nèi)容提取出來(lái)
for url in urls:
    # 向網(wǎng)頁(yè)發(fā)出請(qǐng)求
    resp = requests.get(url)
    # 設(shè)置字符編碼
    resp.encoding = 'utf-8'
    # 使用非貪婪匹配.*?(惰性匹配),re.S用來(lái)匹配換行符
    obj1 = re.compile(r'(?P.*?)', re.S)
    obj2 = re.compile(r'.*?)".*?>', re.S)
    obj3 = re.compile(r'.*?)".*?>', re.S)
    # 對(duì)網(wǎng)頁(yè)源代碼進(jìn)行匹配
    result1 = obj1.finditer(resp.text)
    result2 = obj2.finditer(resp.text)
    result3 = obj3.finditer(resp.text)
    # 創(chuàng)建一個(gè)隊(duì)列來(lái)將數(shù)據(jù)保存,方便寫入csv文件中
    lis = []
    for it in result1:
        #print("標(biāo)題:",it.group("title"))
        lis.append(it.group("title"))
    for it in result2:
        #print("關(guān)鍵字:",it.group("keywords"))
        lis.append(it.group("keywords"))
    for it in result3:
        #print("摘要:",it.group("description"))
        lis.append(it.group("description"))
    print(lis)
    print()
    # 將隊(duì)列寫入csv文件
    csvwriter.writerow(lis)
    # 關(guān)閉請(qǐng)求
    resp.close()
print('over!')
# 關(guān)閉文件指針
f.close()

? 下面是運(yùn)行結(jié)果圖:

用WPS打開這個(gè)csv文件進(jìn)行查看:?

在pycharm中打開csv文件查看是否將數(shù)據(jù)寫入文件中:

結(jié)語(yǔ)

? 好矛盾好糾結(jié),又想把思路寫清楚又感覺沒必要。。。。。。

? 感謝瀏覽這篇博客,希望這篇博客的內(nèi)容能對(duì)你有幫助。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文標(biāo)題:python簡(jiǎn)單實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲-創(chuàng)新互聯(lián)
文章URL:http://muchs.cn/article4/cspcoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站導(dǎo)航、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)