您的位置:首页 > 编程语言 > Python开发

[笔记]python爬虫学习笔记(一)——网页的获取和打印

2018-05-12 10:25 429 查看

运行平台:Windows 
Python版本:Python3.x 
IDE:Sublime text3学习参考博客:https://www.geek-share.com/detail/2699295955.html开发环境搭建参考博客:https://www.geek-share.com/detail/2682586641.html在Subilime text3 搭建python编译环境时遇到了各种bug
安装Anaconda插件以后,编写python代码以后有白色方框ORZ,可能原因是代码不符合PEP 8规范解决方法有两个:一是直接关闭Anaconda的这项提示,Sublime > Preferences > Package Settings > Anaconda > Settings User 中添加如下代码:

[python] view plain copy
  1. {"anaconda_linting": false}  
二是安装格式化插件Python PEP8 Autoformat,快捷键Ctrl+Shift+R。下载:https://bitbucket.org/StephaneBunel/pythonpep8autoformat

简单爬虫:

urllib包:处理URL

包含模块:

urllib.request:打开并读取URLs

urllib.error:包含一些有urllib.request产生的错误,可以使用try进行捕捉

urllib.parse:包含一些解析URLs的方法

urllib.robotparser:解析robots.txt文本文件,它提供了一个单独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面

打开网站,读取并打印信息

# -*- coding: UTF-8 -*-
import io
import sys
from urllib import request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')		#改变标准输出的默认编码
if __name__ == "__main__":
response = request.urlopen("http://fanyi.youdao.com/")
html = response.read()
html = html.decode('utf-8')		#根据网页的编码方式进行解码
print(html)
报错:UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 4005: illegal multibyte sequence

报错原因:print()函数自身有限制,不能完全打印所有的unicode字符。

解决办法:

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')    #改变标准输出的默认编码
参考博客:https://blog.csdn.net/jim7424994/article/details/22675759


获取网页的编码方式:

安装第三方库chardet

安装时遇到的问题:

打开cmd:右键开始,运行,输入cmd

更新pip:输入命令

python -m pip install --upgrade pip # 升级pip(python3.4之后的版本都自带了PIP,但是需要升级之后才能使用)安装chardet

我的python文件在D盘,cmd中cd切换到D盘出了点问题,cd之后再输入"d:"就ok了,切换到pip所在的目录下,例如我的目录为“D:\coding\python36\Scripts”,然后输入指令:

pip install chardet
然后就可以用啦~
# -*- coding: UTF-8 -*-
from urllib import request
import chardet
if __name__ == "__main__":
response = request.urlopen("http://fanyi.youdao.com/")
html = response.read()
chardet = chardet.detect(html)
print(chardet)


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: