python爬虫上手 笔记<1>

    现在利用业余时间做个小的训练模型,需要用到大量的图片数据。第一时间想到的是使用搜索引擎来爬取数据。于是需要做一个爬虫。

    网上找爬虫,第一个推荐的就是BeautifulSoup。于是找了一本BeautifulSoup的书来指导操作。看完书以后便有了如下的代码。

   

import urllib2
import json
from bs4 import BeautifulSoup

class ImgCrawler:
    def __init__(self,html = None, queryword = None):
        #网址
        self.html  = html
        #搜索关键词
        self.query = queryword
        #伪装浏览器头
        self.header = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36"}

    #获取请求
    def genRequest(self):
        return urllib2.Request(self.html+self.query,headers = self.header)

    #获取url供beautifulsoup使用
    def getUrl(self,request = None):
        return urllib2.urlopen(request)

    #获取html结构
    def getSoup(self,url = None, parser = None):
        return BeautifulSoup(url, parser)

    #获取真实的img链接
    def getActualUrl(self, soup= None,flag=None, classflag=None, jsonflaglink=None, jsonflagtype=None ):
        actualurl = []
        for a in soup.find_all(flag, {"class" : classflag}):
            link = json.loads(a.text)[jsonflaglink]
            filetype = json.loads(a.text)[jsonflagtype]
            detailurl = link + u'.' + filetype
            actualurl.append(detailurl)
        return actualurl

if __name__ == '__main__':
    search_url = "https://www.google.com.hk/search?safe=strict&hl=zh-CN&site=imghp&tbm=isch&source=hp&biw=&bih=&btnG=Google+%E6%90%9C%E7%B4%A2&q=" #从google搜索时提取出来的链接,不同google站点不同
    queryword = raw_input(u'搜索关键词=')#输入关键词

    #调用类
    img = ImgCrawler(search_url, queryword)
    #生成使用请求
    request = img.genRequest()
    #获取url,注意失败应有提示
    try :
        url = img.getUrl(request)
    except:
        print u'无法链接到google'
    #获取html结构 html.parser是beautiful的一种结构的关键词
    soup = img.getSoup(url, 'html.parser')
    #网页代码分析,google图片搜索在网页的div下class属性为rg_meta的js脚本里,以ou开头的后面是链接,以ity开头的后面是文件类型
    #获取本页图片网页链接
    actualurllist = img.getActualUrl(soup,'div','rg_meta','ou','ity')
    print len(actualurllist)

    但是当查看len(actualurllist)的时候发现,长度始终只有100。查看google网页,发现现在的网页都是滚动刷新的,而且使用BeautifulSoup也只能处理超链接,对按钮也无能为力。在stackoverflow上查询,也是这个结论。因此终极方法是使用python + PhatomJS + Selenium来解决问题。因此装PhatomJS+Selenium。至于运行速度,资源消耗暂时不管了吧。

     先在 http://phantomjs.org/download.html 下载了操作系统对应的版本。解压开,只有一个exe文件。于是在环境变量里添加了这个叫做phantomjs.exe的文件。phantomjs的文档地址http://phantomjs.org/quick-start.html

     然后在 https://pypi.python.org/packages/51/8b/21edaaee627c8e1c37b6c281eff2240b1eba0cf472c08c03b1920c1227a4/selenium-3.4.3-py2.py3-none-any.whl#md5=dd4e23aae252aca03f23e0ad67bb2e2b 下载whl版本的安装文件

     进入下载路径,使用python -3 -m pip install selenium-3.4.3-py2.py3-none-any.whl进行安装。这里我的工作环境是Win10,python2.7,已装了anaconda2(64bit),使用pycharm。

     装的时候提示说pip version是8.1.2, 需要9.0.1 于是按照提示,使用python -m pip install --upgrade pip进行升级,然后才装上selenium



  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值