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)
稍做解释
- 上述脚本结果存入Excel,其中
newline=''
不会出现空行。 - python正则导入模块
import re
,URL及其文本匹配<a.*?href="(.*?)".*?>(.*?)</a>
。 - 以下这两行以便python正确识别网页编码,以防乱码。
encoding = chardet.detect(resp.content)["encoding"]
resp.encoding = encoding
-
urljoin(url, link[0])
Url相对路径,改为绝对路径。
对SEO作用
- 方便查看网页上有那些超链接,以便进一步查看是否是404、301等。
- 根据First link counts原则,查看相同Url,第一个Url的anchor是否合适。