简单爬虫,爬取书本图片。

爬虫过程:

源文件:

1. bookid_bookname_zz.txt,存储为dict类型bookNmaes。

<bookId,”bookname+zz”>

2. url_root为亚马逊某本书的搜索界面。

程序:

1.使用的第三方库:

BeautifulSoup,Urllib2, selenium.webdriver, re

2. Webdriver的phantomJS可视化爬虫过程,进行调试。

3. 

4.  Crawl为主函数也即调度端,crawl(driver, url_root, bookNames)

5.  给网页下载器(download_amazon)传入:

download_amazon(driver, url_root, bookId, bookNames)

a.  传入bookId是为了获取dict类型中的书名及作者,作为检索的关键词

b.  根据亚马逊页面特征,每个书籍检索页面的按钮有固定的id,根据driver的find_element_by_id获取检索按钮,这样可以触发检索操作。Id:”twotabsearchtextbox”

c.  由于亚马逊检索框有限定长度,超过限定长度后(40-50串长)的时候,会返回一个空页面(估计认为是恶性行为了..),而图书馆记录的书名和作者有时候会过长,而我们一般可能用一个作者名加书名就可以确定一本书,因此做了一个简单的处理,截取字符串的前39串长,这样保证不会返回空页面。

d.  使用send_keys方法填充检索词,按钮的submit触发检索事件。

e.  使用driver.page_source返回当前返回页面的源码。

6.  给网页解析器(imgparse_amazon)传入:

imgparse_amazon(html_string,bookId,bookNames),其中html_string是网页下载器下载下来的网页源码。

a.  我们的目的是获取图片并进行下载到本地,然后将本地存放图片的目录搭建图片服务器,为界面展示进行服务。

b.  BeautifulSoup用来解析当前网页源码,我们的目的是获取图片的url,这样便可以直接进行访问该url下载。

c.  先定位到亚马逊返回的搜索列表:soup.find('ul',attrs={"id":r"s-results-list-atf"})

d.  如果该列表为空,说明没有检索到,则返回url为空

e.  由于亚马逊的搜索功能已经提供最相近的结果,所以我们返回当前搜索列表中的第一个结果的图片url.(之前有做解析字符串,提取出版社,根据出版社是否一致进行筛选,因为有时候图书馆的出版社空缺或者网站出版社空缺,同时字符串有时候存储的不当,如果严格控制相等,反而取得不好的效果,后舍弃。)

7.以urllib2.urlopen打开返回的Url,以二进制形式将图片存入指定目录,图片为bookId,不能为书名,因为书名可能重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值