python3采集网页上所有的超链接URL及文本

2018-12-05  本文已影响0人  yoyo狐

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. 上述脚本结果存入Excel,其中newline=''不会出现空行。
  2. python正则导入模块import re,URL及其文本匹配<a.*?href="(.*?)".*?>(.*?)</a>
  3. 以下这两行以便python正确识别网页编码,以防乱码。
encoding = chardet.detect(resp.content)["encoding"]
resp.encoding = encoding
  1. urljoin(url, link[0]) Url相对路径,改为绝对路径。

对SEO作用

  1. 方便查看网页上有那些超链接,以便进一步查看是否是404、301等。
  2. 根据First link counts原则,查看相同Url,第一个Url的anchor是否合适。
上一篇 下一篇

猜你喜欢

热点阅读