一. 微博模拟登陆
1. 百度搜微博开放平台可满足爬取量不大的情况
2. 微博模拟登陆和下拉鼠标应对ajax加载
from selenium import webdriver
import time browser = webdriver.Chrome()
browser.get('https://www.weibo.com')
time.sleep(10)
browser.find_element_by_css_selector("#loginname").send_keys("")
browser.find_element_by_css_selector(".info_list.password input[node-type='password']").send_keys("shiyan823")
browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']").click() # 鼠标下拉
for i in range(3):
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
time.sleep(3)
 
 
 
 
二. chromedriver不加载图片
from selenium import webdriver

chrome_opt = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_opt.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(chrome_options=chrome_opt)
browser.get("https://www.taobao.com")
 
 
 
三. 把selenium集成到scrapy中
以伯乐在线为例子
1. jobbole.py->JobboleSpider类中添加如下代码,引入了信号量
from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals
from selenium import webdriver def __init__(self):
self.browser = webdriver.Chrome()
super().__init__()
dispatcher.connect(self.spider_closed, signals.spider_closed) def spider_closed(self, spider):
#当爬虫退出的时候关闭chrome
print ("spider closed")
self.browser.quit()
 
2. middleware.py中添加

from selenium import webdriver
from scrapy.http import HtmlResponse class JSPageMiddleware(object):
#通过chrome请求动态网页
def process_request(self, request, spider):
if spider.name == "jobbole":
# browser = webdriver.Chrome()
spider.browser.get(request.url)
import time
time.sleep(3)
print ("访问:{0}".format(request.url)) return HtmlResponse(url=spider.browser.current_url, body=spider.browser.page_source, encoding="utf-8", request=request)
 
 
3. 修改settings.py中的DOWNLOADER_MIDDLEWARES
'Article.middlewares.JSPageMiddleware': 1,
 
 
 
四. 无界面chrome运行
linux下运行
pip install pyvirtualdisplay
pip install xvfbwrapper
apt-get install xvfb from pyvirtualdisplay import Display
display = Display(visible=0, size=(800,600)
display.start()
browser = webdirver.Chrome()
browser.get()
scrapy下无界面方式: scrapy-splash
 
 
 
 
五. scrapy的暂停和重启
 
以拉钩网为例,测试暂停和重启
1. 在项目目录先新建文件夹job_info,和scrapy.cfg同级
2. 在cmd命令行中,进入项目所在目录,执行如下代码
scrapy crawl  lagou -s JOBDIR=job_info/001
3. 按一次ctrl +c ,还会自动执行一些后续命令,等它处理完
4. 同样运行scrapy crawl lagou -s JOBDIR=job_info/001,完成重启。接着之前的继续运行
5. 如果想重头爬scrapy crawl lagou -s JOBDIR=job_info/002
6. 按两次ctrl + c是立刻中断
 
 
 
六. scrapy url去重原理
以伯乐在线为例,首先注释掉之前设置的对接selenium,包括DOWNLOAD_MIDDLEWARES和jobbole.py中的相关代码
 
默认去重源码在dupefilters.py中
 
 
 
七. scrapy telnet服务
爬虫运行时,会启动一个telent服务,端口一般为6023
在控制面板->程序->启动或关闭windows功能中开启telnet
可在cmd中输入telnet localhost 6023即可连上telnet
telnet相关操作命令
1)输入est()可查看爬虫状态
2) 获取settings中的值 settings["COOKIES_ENABLED"]
 
 
 
 
 

第八天,scrapy的几个小技巧的更多相关文章

  1. 关于Scrapy爬虫项目运行和调试的小技巧(下篇)

    前几天给大家分享了关于Scrapy爬虫项目运行和调试的小技巧上篇,没来得及上车的小伙伴可以戳超链接看一下.今天小编继续沿着上篇的思路往下延伸,给大家分享更为实用的Scrapy项目调试技巧. 三.设置网 ...

  2. 关于Scrapy爬虫项目运行和调试的小技巧(上篇)

    扫除运行Scrapy爬虫程序的bug之后,现在便可以开始进行编写爬虫逻辑了.在正式开始爬虫编写之前,在这里介绍四种小技巧,可以方便我们操纵和调试爬虫. 一.建立main.py文件,直接在Pycharm ...

  3. Scrapy 5+1 ——五大坑附送一个小技巧

    笔者最近对scrapy的学习可谓如火如荼,虽然但是,即使是一整天地学习下来也会有中间两三个小时的"无效学习",不是笔者开小差,而是掉进了深坑出不来. 在此,给各位分享一下作为一名S ...

  4. 【Scrapy(四)】scrapy 分页爬取以及xapth使用小技巧

    scrapy 分页爬取以及xapth使用小技巧 这里以爬取www.javaquan.com为例: 1.构建出下一页的url: 很显然通过dom树,可以发现下一页所在的a标签   2.使用scrapy的 ...

  5. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  6. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具

    前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...

  7. 分享两个BPM配置小技巧

    1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...

  8. linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!

    这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /et ...

  9. JS处理事件小技巧

    今天,就分享一下我自己总结的一些JS的小技巧: ①防止鼠标选中事件 <div class="mask" onselectstart="return false&qu ...

随机推荐

  1. Debian Buster 配置 Laravel 运行环境(nginx + redis + supervisor)

    1 目标 将开发完成的 Laravel 项目布署于 Debian 之上.由于项目要求使用 horizon 官方扩展,要求 PHP7.1+,故采用 Debian buster (下一版) 2 材料 IP ...

  2. 类Pinterest Web原型制作分享——花瓣网

    这是一家基于兴趣的社交分享网站,网站为用户提供了一个简单地采集工具,帮助用户将自己喜欢图片重新组织和收藏.网站布局美观合理,内容丰富.此原型模板所用到的组件有按钮栏.菜单栏.搜索框.水平分割线.交互动 ...

  3. circos 绘制关系型图ribbon,并加入透明度

    luminance = lum80<<include colors_fonts_patterns.conf>><colors># r,g,b,a color def ...

  4. KbmMW 认证管理器说明(转载)

    这是kbmmw 作者关于认证管理器的说明,我懒得翻译了,自己看吧. There are 5 parts of setting up an authorization manager: A) Defin ...

  5. 2018.09.11 poj1845Sumdiv(质因数分解+二分求数列和)

    传送门 显然需要先求出ab" role="presentation" style="position: relative;">abab的所有质因 ...

  6. Linux服务器部署系列之五—Webmin篇

    对于很多习惯使用windows的用户,在刚接触Linux的时候,要使用命令行配置Linux服务器可能会感觉难以适应.今天我们来讲解一下,Linux下的图形配置工具—Webmin,通过这款工具,用户可以 ...

  7. node.js初步总结

    一:先上一段代码 process.argv.forEach(function (val, index, array) {    console.log(index + ":" + ...

  8. [笔记]linux命令学习

    scp /root/Downloads/cymothoa-1-beta.tar.gz root@192.168.1.66:/root/ rc.local exit 0前加入: sh /root/abc ...

  9. spring 课程

    官网 参考文档 // 1. Spring_HelloWorld 20:22 // 2. Spring_IOC&DI概述 08:07 // 3. Spring_配置 Bean 21:58 // ...

  10. golang闭包里的坑

    介绍 go的闭包是一个很有用的东西.但是如果你不了解闭包是如何工作的,那么他也会给你带来一堆的bug.这里我会拿出Go In Action这本书的一部分代码,来说一说在使用闭包的时候可能遇到的坑.全部 ...