最近学习了爬虫,爬了一些内容,分享一下,方便大家。
#导入模块
import urllib.request
import urllib.error
import re,ssl
import ssl
#针对https ,需要单独处理
#import ssl
#ssl._create_default_https_context = ssl._create_unverified_context
ssl._create_default_https_context = ssl._create_unverified_context
#腾讯新闻首页网址
url="https://xw.qq.com/"
#该部分通过用户代理(User-Agent)来模拟浏览器请求,但腾讯新闻可直接访问,可不用
#headers=("User-Agent"," Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Mobile Safari/537.36")
#opener=urllib.request.build_opener()
#opener.addhesders=[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":"(.*?)",'''
#全局匹配函数,把提取出来的信息放入列表中
thislink=re.compile(pat).findall(date)
#清除缓存
urllib.request.urlcleanup()
#打印该列表,可不要
#print(thislink)
#通过循环将网址放入本地
for i in range(len(thislink)):
#进行异常处理,urllib,request.urlretrieve()函数会报错,所有要进行爬虫异常处理
try:
#判断字符串"https"是否在提取出的链接中,若在,直接放入本地
if ("https" in thislink[i]):
#通过urlretrieve()直接把链接放入本地
newurl=thisurl[i]
urllib.request.urlretrieve(newurl,"D:/write1/date/"+str(i)+".html")
#打印存放好的网址
print(newurl)
else:
#没有"https"时,通过手动添加链接头(包括https部分),此时针对了https,单独处理
newurl="https://xw.qq.com"+thislink[i]
urllib.request.urlretrieve(newurl,"D:/write1/date/"+str(i)+".html")
#打印存放好的网址
print(newurl)
#HTTPError有两个属性,异常原因和异常状态码
except urllib.error.HTTPError as e:
#打印异常状态码
if hasattr(e,"code"):
print(e.code)
#打印异常原因
if hasattr(e,"reason"):
print(e.reason)
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
文章目录 玩转json 什么是json Python中的Json模块 获取json中的某个数据 Jpath ...
面向对象概念 object 就是对某种事物的抽象 抽象原则包括数据抽象和过程抽象两个...
本篇将讲述一个小白从遇到跨域不知道是跨域问题,到知道是跨域问题不知道如何解...
最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应...
ajax的全称是asynchronous javascript and XML ,它是异步的js和XML。它是局部刷...
其实这个问题在初次学习html中select标签时就已经冒出来了,时至今日,依然没有...
从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银...
原来是在系统上出了问题.是2003的IIS出现了问题,因为是2003的系统,它对ASP的上...
拖延症晚期的我原本计划趁着周末写个年终总结,但是一直没有什么思路,想来想去...