python爬虫上手 笔记<1>

本文介绍如何使用Python和BeautifulSoup从Google抓取图片数据,并解决仅能获取100张图片的问题。文章详细记录了作者从初步尝试到引入PhantomJS和Selenium的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    网上找爬虫,第一个推荐的就是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



  


标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值