Python爬虫学习之旅

第一天

使用urllib爬取网页

>>>Import urllib.request
>>>file=urllib.request.urlopen(“http://www.baidu.com”)
>>>data=file.read() 读取全部内容赋值给data
>>>dataline=file.readline() 读取一行内容赋值给dataline
>>>print(dataline) 输出爬取内容中的一行
>>>print(data) 输出爬取全部内容

我们将爬取的网页以网页的形式保存到本地

方法一:

>>>fhandle=open(“d:/python/1.html”,”wb”) 把爬取的网页读取赋给一个变量,以写入本地html等格式文档
>>>fhandle.write(data) 查看变量的值的容量大小
99437 该文件的字节数
>>>fhandle.close() 关闭该文件,做的有始有终

方法二:

>>>filename=urllib.request.urlretrieve(http://www.baidu.com,filename=” d:/python/1.html”)
>>>urllib.request.urlcleanup() 注意:urlretrieve执行中会产生一些缓存,需要清除。
urllib其他的一些常用方法:
>>>file.getcode() 获取当前爬取网页的状态码
>>>file.geturl() 获取当前爬取网页的url
>>>urllib.request.quote(“http://www.baidu.com”) 进行编码成符合标准的字符
>>> urllib.request.UNquote(“http%3A// www.baidu.com”) 已进行符合的字符编码进行解密。

有时候爬取一些网页或出现403错误,这是网页的反爬虫设置。我们可以设置headers信息模拟浏览器去方法这些网站。

>>> Import urllib.request
>>>file=urllib.request.urlopen(url) 爬取这个网页出现403错误


方法一:使用build_opener()修改报头

>>> Import urllib.request
>>> headers=("er-Agent", "zilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36")模拟浏览器去爬取网页内容
>>>opener=urllib.request.build_opener()
>>>opener.addheaders=[headers]
>>>data=opener.open(url).read()
>>> fhandle= open("d:/python/3.html","wb") 以网页形式存储到本地
>>>fhandle.write(data) 获取内容字节数
>>>fhandle.close()

方法二:使用add_header添加表头

>>> Import urllib.request
>>>req=urllib.request.Request(url)
>>>req.add_header("er-Agent", "zilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36")
>>>data=urllib.request.urlopen(req).read()

超时设置(timeout):循环中,有时能成功爬取网站内容并输出内容长度,有时却无法爬取。