2018/01/22 爬虫日记

本文记录了作者从2017年10月至2018年初学习爬虫的过程,涉及正则表达式、Python的urllib和urllib2、requests库、BeautifulSoup、Scrapy、XPath、Selenium、PhantomJS、多线程和多进程等技术。还提到了VBA、Excel自动化、数据存储、文件读写、编码问题以及爬虫框架Scrapy的使用,以及在项目中遇到的问题和解决方案。
摘要由CSDN通过智能技术生成
20171024
①导入自定义的模块(如类),需要在当前类作导入 类的引用声明,如self.tool = tool.Tool()


20171025


①正则表达式:两个<><>之间匹配不到的时候需要考虑 换行符的存在,加上.*?即可。
②注意每行代码的缩进。
③中文编码问题:decode(' utf-8')  decode(' gbk')
④文件读写:file=open(文件名,打开格式),file.write()
⑤格式化字符%%,输出%
⑥用于判断的逻辑变量,False True 和0 1 不同




20171026
①写入图片,urlopen,read,write。注意文件名为xxx.jpg
②下载图片的网络响应问题IOError: [Errno ftp error] [Errno 10060] 
③os.makedirs创建文件目录,os.path.exists检查是否存在。
④python爬虫实战四心得:给定图片URL抓取图片下载到本地,可行。但比如一个mm的个人网址多个图片抓取就提示10060。


20171027
①尝试列表多个图片URL,抓取导入本地,3个,可行。
②淘女郎mm图片链接 + 上“https:”后,可以实现抓取。多个链接抓取图片实现。
③抓取新的模特的时候,发生错误,'NoneType' object has no attribute 'group'
④第一次尝试为重新执行抓取,因为有时候第一次就会弹出这个错误,有时候是第二次.etc


2017/11/03(之前第一次记录日记丢失,11/06补上)
①获取图片URL有问题,不再继续学习。转爬虫框架和高级工具(库)。
②requests库,requests.post\get\delate\head\options\,cookies,timeout,会话session持久,verify,proxies
③Beautiful Soup库,安装。导入from bs4 import BeautifulSoup。输出.prettify。标签\字符串\注释。
④遍历,直接子(children\contents)\所有子孙(descendants)\内容(strings)\父节点(parent)\s\
  兄弟(next_sibling\previous_sibling)\s\next_element\previous
⑤搜索,findall\find\
⑥CSS选择器,标签\类名\ID\组合,注意同一节点中的组合中间不能加空格。
⑦开始学习Xpath,lxml。




2017/11/06
①装机图表,excel VBA函数实现自动更新进程点的颜色。
②在excel打开时自动执行VBA函数代码,目前仅能在thisworkbook下定义函数\直接写代码\新建模块定义函数,然后open事件中call。
③方法二。在对应的sheet的private sub worksheet_Activate代码下,不定义函数,直接写代码,
  然后在open中调用sheet3.activate(随后\之前需要activate其他sheet才行)即可。
④条件格式的数据条表达进度百分比,直接“=”会出错。
  解决方法:在thisworkbook下定义函数Sheets(3).Range("C16") = Sheets(3).Range("F20")
  然后在open中call即可。
⑤冻结窗口的灵活变动。
⑥接着学习xpath语法和lxml解析库。




2017/11/07
①Xpath语法。
②节点关系,父\子\同胞\先辈\后代。
③选取节点。nodenamme(节点名称)、/(直接子元素)、//(所有元素)、.( 选取当前节点)、..(当前节点的父节点)、@(属性)。
④谓语,在[]中。
⑤*表示任意匹配。
⑥运算符。


①phantomjs工具,浏览器引擎。运行失败 can't open文件。
②Selenium,自动化测试工具,驱动浏览器/PhantomJS,支持python。
③用python写selenium去驱动phantomjs来模拟浏览器爬虫。
④关于浏览器driver的问题,重启/添加具体路径
  webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")


2017/11/08
①团建影片记录,寻找PPT模板/AE模板, 知乎资源海量。


2017/11/09
①合同审批核准流程。询问IE孙木。
②AE模板制作团建影片,可以简单更换图片、文字。
③AE输出文件太大,AVI格式,需要下载media encoder。
④selenium模拟输入、搜索,封装。
⑤AE模板研究,能操作进程(一个模板分为几大进程)、文字(大小、格式、位置)、图片(更换、修改)、
  背景音乐(添加到下方播放条)。
⑥第一个团建影片建立完成。


2017/11/10  周五


selenium总结
①获取  .find_element_by_id/name/tag_name/xpath
②输入  .send_keys()
③模拟点击  .send_keys("and some",Keys.ARROW_DOWN)
④清除文本  .clear()
⑤下拉选项卡  select_by_index/visible_text_value  Select(driver.find_element_by_name("选项卡名称"))
   取消  deselect
   提交  .click()/submit()
⑥元素拖拽  ActionChains.drag_and_drop(element,target).perform()
⑦页面切换  .switch_to_window("windowName/framename.0.child")
⑧弹窗  driver.switch_to_alert()
⑨等待时间  WebDriverWait(driver,10).until()
            driver.implicitly_wait()


PyQuery总结
①初始化 import后pq(代码/URL/文件)
②属性操作  p.attr("id","xx")
③遍历  .items
④网页请求    pq("url")




爬虫框架PySpider和Scrapy


PySpider


主要架构:scheduler(调度器),fetcher(抓取器),processor(脚本执行)
可灵活使用各种python库对页面进行解析


2017/11/13  周一


Scrapy学习


主要组件:引擎scrapy、调度器scheduler、下载器downloader、爬虫spiders、项目管道pipeline
          下载器中间件、爬虫中间件、调度中间件。
过程:  ①scrapy从scheduler取出url,封装成request请求,传给downloader
        ②downloader下载页面,封装成应答包response,传给spiders
        ③spiders解析response,若是item,交给pipeline
                             若是URL,交给scheduler
        
2017/11/14  周二


试运行PySpider,提示HTTP 599: SSL certificate problem: self signed certificate in certificate chain
解决方法:在crawl中加入忽略证书验证的参数,validate_cert=False。


2017/11/15  周三


①PySpider的运行  cmd启动,端口运行,打开 http://localhost:5000 ,进入PySpider的界面
②PySpider代码,较多新内容。




③多线程和多进程
  多线程的缺点:拿到GIL的CPU才能运行线程,多个核竞争一个GIL导致线程颠簸,效率更低。(不同代码块交替执行)
                多线程运行同一代码块,会出现线程不同步ÿ
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值