Python爬虫 爬取CSDN首页的各窗口内容
Python爬虫 爬取CSDN首页的各窗口内容
Python爬虫
爬取CSDN首页的各窗口内容
还是一些信息的爬取,但处理的方法不同,分享一下,方便大家。
建议使用Internet Explorer浏览器打开,其他浏览器打开会运行网站附带的脚本,会跳转到CSDN首页。
#导入模块
import urllib.request
import urllib.error
import re
#csdn的首页网址
url=”https://www.csdn.net/”
#下面注释部分为模拟浏览器请求,但CSDN可直接访问,可不用
#headers={“User-Agent”,”Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0″}
#opener=urllib.request.build_opener()
#opener.addheaders=[headers]
#date=opener.open(url).read().decode(“utf-8″,”ignore”)
#爬取首页所有信息
#urllib.request.urlopen()函数会报错,所以要进行爬虫异常处理
try:
date=urllib.request.urlopen(url).read().decode(“utf-8″,”ignore”)
print(len(date))
#HTTPError有两个属性,异常原因和异常状态码
except urllib.error.HTTPError as e:
#打印异常状态码
if hasattr(e,”code”):
print(e.code)
#打印异常原因
if hasattr(e,”reason”):
print(e.reason)
#写正则提取网址(提取到的信息,包括”\\”或者”\”都为普通字符)
pat=”’,”url”:”(.*?)”,”’
#将提取到网址放入列表
thisurl=re.compile(pat).findall(date)
#清除缓存
urllib.request.urlcleanup()
#打印列表,可不用
#print(thisurl)
#通过循环将这些网址直接放入本地
for i in range(len(thisurl)):
#去除多余信息
url1=thisurl[i].replace(“u002F”,””)
#打印去除后的网址,可不用
#print(type(url1))
#将网址里面里面的’\’字符换为’/’字符(因为使用urlib.request.urlretrieve()这个函数,
#直接把网址存入本地,而这个网址里面的地址连接符必须是’//’或者’/’,否则会报错,
#这个错报了之后很难发现怎么去改)
url2=url1.replace(“\\”,”/”)
#进行异常处理,因为使用urlib.request.urlretrieve()函数会报错,所以使用爬虫异常处理,
#得到异常状态码和异常原因
try:
urllib.request.urlretrieve(url2,”D:/write1/date1/”+str(i)+”.html”)
print(url2)
except urllib.error.HTTPError as e:
#打印异常状态码
if hasattr(e,”code”):
print(e.code)
#打印异常原因
if hasattr(e,”reason”):
print(e.reason)