python3采集網(wǎng)頁上所有的超鏈接URL及文本

python3腳本先放上

import requests
import re
from urllib.parse import urljoin
import csv
import chardet

def caiji(url):
    file = open('result.csv', 'w', encoding='utf-8', newline='')
    cw = csv.writer(file)
    cw.writerow(['URL', 'Anchor'])

    resp = requests.get(url)
    encoding = chardet.detect(resp.content)["encoding"]
    # print(encoding)
    resp.encoding = encoding
    link_list = re.findall(r'<a.*?href="(.*?)".*?>(.*?)</a>', resp.text, re.S|re.I)
    for link in link_list:
        a = urljoin(url, link[0]), link[1]
        print(a)
        cw.writerow(a)

    file.close()

if __name__ == '__main__':
    url = ''  # 要采集的URL
    caiji(url) 

稍做解釋

  1. 上述腳本結(jié)果存入Excel,其中newline=''不會出現(xiàn)空行。
  2. python正則導(dǎo)入模塊import re,URL及其文本匹配<a.*?href="(.*?)".*?>(.*?)</a>
  3. 以下這兩行以便python正確識別網(wǎng)頁編碼,以防亂碼。
encoding = chardet.detect(resp.content)["encoding"]
resp.encoding = encoding
  1. urljoin(url, link[0]) Url相對路徑,改為絕對路徑。

對SEO作用

  1. 方便查看網(wǎng)頁上有那些超鏈接,以便進一步查看是否是404、301等。
  2. 根據(jù)First link counts原則,查看相同Url,第一個Url的anchor是否合適。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容