python爬虫01:urllib初体验

原创 2016年08月29日 19:20:00

选择爬取网站为 http://www.qiushibaike.com/

翻页之后我们可以看到网址变化为http://www.qiushibaike.com/8hr/page/2/?s=4908225

也就是说,其page的变化决定了我们要爬取第几页糗百

因此url为

url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4908218' %page
page可以自己定,固定的数字,乃至for循环爬取多页,此次初体验先爬取第一页

page = 1
url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4908218' %page
爬虫采用urllib,urllib2库来帮助获取回应的网页

于是,代码初步就出来了

import urllib
import urllib2
page = 1
url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4908218' %page
request = urllib2.Request(url)
response = urllib2.urlopen(request)
print response.read()
但是 发现出现Traceback (most recent call last)错误,此错误常见有网页拒绝非人工(比如爬虫)访问、空间不够等。此处是因为网站检测到非法访问,拒绝了。

所以设置headers

user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
headers = { 'User-Agent' : user_agent }
此处需要了解的是:

                                request(url,data,headers),data,heardes的默认参数以及什么时候需要使用

                                获取headers,user-agent,乃至cookies,proxy的方法(网页F12)

user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
headers = { 'User-Agent' : user_agent }
request = urllib2.Request(url,headers=headers)
因此代码变成了如下模样

import urllib
import urllib2
page = 1
url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4908218' %page
print url
user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
headers = { 'User-Agent' : user_agent }
request = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(request)
result=response.read()
print result

运行成功

但是与原网页的源代码对比,发现 中文字符出现乱码(LINUX下正常显示

是因为Python的编码问题,初步想法是通过正确的解码方式解决乱码问题,通过F12看到是utf-8编码,因此

response.read().decode("utf-8")

import urllib
import urllib2
page = 1
url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4908218' %page
print url
user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
headers = { 'User-Agent' : user_agent }
request = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(request)
result=response.read().decode("utf-8")
print result

但是出现UnicodeEncodeError: 'gbk' codec can't encode character u'\ufeff' in position 42377: illegal multibyte sequence

感觉很奇怪,页面本身是UTF-8的,然后想要UTF-8解码,结果却提示GBK错误,之后走了一些弯路,暂且不表。

通过查找资料,得知对于此Unicode的字符,需要print出来的话,由于本地系统是Win7中的cmd,默认codepage是CP936,即GBK的编码,所以需要先将上述的Unicode的titleUni先编码为GBK,然后再在cmd中显示出来,然后由于titleUni中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”的错误的。

得到解决方案

import urllib
import urllib2
page = 1
url = 'http://www.qiushibaike.com/8hr/page/%d/?s=4908218' %page
print url
user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
headers = { 'User-Agent' : user_agent }
request = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(request)
result=response.read().decode("utf-8").encode("GB18030")
print result
目前为止得到的request跟F12获得的页面内容相同。(LINUX下此方法反而乱码,多此一举










版权声明:Talk is cheap,show me the code 举报

相关文章推荐

python 3.X urllib工具库初体验——CMD模式有道翻译

磨磨蹭蹭的学习着python,今天终于开始接触Python自带的urllib工具库,感谢小甲鱼的Python教程,跟着一步一步做下来,终于感受到Python在网络方面的简洁性,做一个略加改进的有道翻译...

Python初体验:三句话写个刷微博、博客、空间等的小爬虫

目标:用python写一个自动访问网页的东西。 Python果然是够强大,参考网上一个智普啥的python视频培训,自己又完善了下。要让python打开浏览器,并访问指定网址,很简单只需下面两句话:i...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Python爬虫初体验之赶集网租房信息获取

初学Python,刚接触了BeautifulSoup模块,就拿爬取赶集网租房信息小试身手,以此彰显Python的威猛强大。    一、环境配置:         1、Python 3.6.1 (w...

Python爬虫框架--pyspider初体验

之前接触scrapy本来是想也许scrapy能够让我的爬虫更快,但是也许是我没有掌握scrapy的要领,所以爬虫运行起来并没有我想象的那么快,看这篇文章就是之前使用scrapy的写得爬虫。然后昨天我又...

python爬虫之urllib库的使用

1.爬取百度的源码 爬网页就是根据URL来获取它的网页信息,源码里面有HTML代码,加JS、CSS,其中最重要的部分在HTML代码中 截取了一小段的运行结果 2.分析代码 首先从urllib....

Python3网络爬虫(一):利用urllib进行简单的网页抓取

运行平台:Windows Python版本:Python3.x IDE:Sublime text3 转载    原作者和出处:http://blog.csdn.net/c406495762...

《python爬虫》学习笔记:urllib2库的使用

最简单的爬虫代码import urllib2 response=urllib2.urlopen("http://www.baidu.com") print response.read()上面的等价代...

Python爬虫urllib笔记(四)之使用BeautifulSoup爬取百度贴吧

BeautifulSoup-第三方分析网页内容库--替换正则表达式(有官方中文文档可查看) 提取百度贴吧网页中的楼主发的图片 # -*- coding:utf-8 - # # # Beau...

python写爬虫使用urllib2方法

python写爬虫使用urllib2方法 整理了一部分urllib2的使用细节。 1.Proxy 的设置 urllib2 默认会使用环境变量 http_proxy 来设置...

Python3.7 爬虫(三)使用 Urllib2 与 BeautifulSoup4 爬取网易云音乐歌单

版权声明:本文为 wintersmilesb101 -(个人独立博客– http://wintersmilesb101.online 欢迎访问)博主原创文章,未经博主允许不得转载。 废话在前面的的博客...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)