现在的位置: 主页 > 主打产品 > 文章正文

Python爬虫——手把手爬Kindle商店

作者:成都渝祥金属丝网制品有限公司 来源:www.cdyuxiang.com 未知发布时间:2017-09-06 09:29:55
Python爬虫——手把手爬Kindle商店

这次我们要爬的网页是:Kindle商店中的今日特价书,其中每周/每月特价书同理,就不再重复了
选择这个网页的原因有两个:
??一是实用,很多人都会经常去看看Kindle特价书有没有自己喜欢的;
??二是简单,不需要分析JS脚本
这次我们学习的基本内容涉及:
urllib2获取网页、re正则表达式、图像获取

阅读前的建议: 必备条件:Python的基础知识,学习网站:Python 2.7教程 - 廖雪峰的官方网站 建议学习正则表达式 更完整的爬虫教程:静觅 文章中注释用灰色表示,对代码的理解用深青色,正则表达式相关内容用淡钢蓝 urllib2对亚马逊的访问并不稳定,有时会出现httplib错误,重新运行即可 开发工具 IDE: PyDev(Eclipse的一个插件) 或者 PyCharm(JetBrain公司的IDE)[我用的是PyCharm,平时也用PyDev] 编辑器:Sublime Text3 浏览器:Chrome或者360极速浏览器 正文:

首先我们访问我们要抓取的页面,发现URL是:
https://www.amazon.cn/gp/feature.html/ref=amb_link_34492412_17?ie=UTF8&docId=126758&pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=merchandised-search-top-1&pf_rd_r=SW95YM983VR5D6D93RAP&pf_rd_t=101&pf_rd_p=289836012&pf_rd_i=116087071

看起来有那么一点奇怪,联想到这个页面是每日更新的,所以我怀疑这个URL每天都会不同,因此我们不能直接访问这个URL。
那么现在我们就应该找一个固定的URL作为起点,然后进行抓取;Kindle商店的URL好像也是不固定的,看起来唯一的选择是亚马逊首页了

我们的思路可以基本捋出来了:



访问亚马逊首页

Python自带了一个名叫urllib2的库,专门用于从网页中获取信息
我们想要获取一个网页的源码,最简单的方式就是:

import urllib2 url = 'https://www.amazon.cn/' response = urllib2.urlopen(url) # response即是网页返回的内容 print response.read() # 调用read()方法将网页源码转换为字符串

我对于这段代码的理解是:
urllib2的urlopen方法将网页的响应封装成类似文件的结构,我们要读取里面的内容时直接read()就好

网页获取的基本知识:
1. GET / POST
访问网页的方式有两种,一种是GET,另一种是POST
GET方法直接请求服务器的网址
POST方法则向服务器发送信息并接收服务器的响应
具体在urllib2中,GET就是简单的urllib2.urlopen(url)
POST则需要将需要提交的表单的所有信息封装成字典values = {'name': 'value', 'name':'value',...}
并且使用postdata = urllib.urlencode(values)
然后才能urllib2.urlopen(url, postdata)
POST适用于访问需要简单的登陆的网站如大多数学校的教务处
2. headers
有些网页为了防止爬虫采用验证浏览器头的方法,所以我们有时候需要改变浏览器头:
headers = {'User-Agent' : user_agent}
request = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(amazonRequest)
在这里我们构建了一个Request,并且用urlopen发送(如果需要POST可以在构建时加上data=postdata)

那么现在,我们就获得了亚马逊首页的源码,但是在PyCharm的控制台太难分析页面了,所以我们将源码复制一下,放到sublime里面,然后我们如图选择语法格式,代码颜色就会显示出来。然后按下代码格式化快捷键Ctrl+Alt+F,代码就好看多啦!

sublime下选择语法

接着就是关键的一步了,用正则表达式获取Kindle商店的URL。
我们先来看看亚马逊首页,我们在首页是这样访问Kindle商店的:

亚马逊首页


所以我们直接在sublime里面搜索“Kindle 商店”(注意中间的空格不能少),然后我们来到这里:

sublime搜索


注意:“Kindle 商店”有两个搜索结果,选择的时候注意选择跟上图一样的那个
我们获取的就是后面“url1”的内容,所以我们写如下正则表达式:
Python的正则表达式很简单:
1. re.compile(string, flags)创建模式,pattern一般用re.S(多行选择)
2. re.search(pattern, string)根据模式在string中匹配到则停止
3. re.findall(pattern, string)返回一个List,里面包含所有符合的子字符串
4. 常用的字符: “.”代表任意字符, “*”代表个数为任意个, “?”代表零次或一次匹配前面的字符或子表达式, 括号”()”内的则为返回内容

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:咸宁网站建设 http://xianning.45qun.com

上一篇:网站如何增加用户信任度 下一篇:最后一页