gecko

单线程的JavaScript

有些话、适合烂在心里 提交于 2020-11-30 07:25:49
推荐阅读: JavaScript 运行机制详解:再谈Event Loop 为什么JS要设计成单线程? 引用阮老师的原话: JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,将来也不会改变。 为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。 Javascript是单线程的 因为 JS运行在浏览器中,是单线程的,每个window一个JS线程 ,既然是单线程的,在某个特定的时刻只有特定的代码能够被执行,并阻塞其它的代码。而浏览器是 事件驱动的(Event driven) ,浏览器中很多行为是 异步(Asynchronized) 的,会创建事件并放入执行队列中。javascript引擎是单线程处理它的任务队列,你可以理解成就是普通函数和回调函数构成的队列

python 网络爬虫requests处理cookie,代理IP,云打码介绍

岁酱吖の 提交于 2020-11-29 16:12:20
一。基于requests模块的cookie操作(session处理cookie) cookie概念:当用户通过浏览器首次访问一个域名时,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就是cookie。 cookie作用:我们在浏览器中,经常涉及到数据的交换,比如你登录邮箱,登录一个页面。我们经常会在此时设置30天内记住我,或者自动登录选项。那么它们是怎么记录信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。 cookie介绍 import requests from lxml import etree headers = { ' User-Agent ' : ' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome

爬虫之图片懒加载技术及js加密

a 夏天 提交于 2020-11-28 06:24:46
图片懒加载 图片懒加载概念: 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。 网站一般如何实现图片懒加载技术呢?在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。站长素材案例后续分析:通过细致观察页面的结构后发现,网页中图片的链接是存储在了src2这个伪属性中 案例: 1. 抓取站长素材http://sc.chinaz.com/中的图片数据  import requests  from urllib import request  import re  import os #1.检查页面数据是否为动态加载出来的 #2.获取页面源码数据 if not os.path.exists('tupian'): os.mkdir('tupian') headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0;

http响应总结:常见http响应错误总结

时间秒杀一切 提交于 2020-11-26 03:39:16
<div id="content_views" class="markdown_views"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>工作中经常会被同事问这个http请求为什么调不通,我虽然能解释清楚错误是什么,但是没有总结过,想到刚开始时,也是看了别人的文章才会的,所以总结一下,贡献一下自己的经验。</p> <h2 id="http-404-响应">http 404 响应</h2> <p>404响应可以说是,在java web中最常见的错误了,基本上大家都理解问题产生的原因,即找不到这个资源。</p> <ul> <li><strong>路径匹配错误导致的404</strong></li> </ul> <p>比如说请求的访问路径为<a href="http://localhost:8080/project/test" rel="nofollow"

selenium+java 关于图形化滑块的处理(1)

泄露秘密 提交于 2020-11-25 02:03:49
新人新手,初次接触selenium+Java自动化测试,试着分享点学习中的东西。 在做自动化的时候,有时会遇见图形化校验的问题,特别是现在大部分网站都加上了滑块校验,今天分享一下最简单的滑块校验的处理; 这个滑块的处理步骤: 1.先定位和滑块控件的元素; 2.获得滑块滑动的距离,也就是滑块目的地的坐标; 3.拖动滑块。 1.定位滑块控件,如下图 定位外面的控件也行,定位里面小的那个也行 // 外 WebElement sour = driver.findElement(By.cssSelector(".cpt-img-double-right" )); // 内 WebElement sour = driver.findElement(By.cssSelector(".cpt-drop-btn")); 2.获得滑块滑动的距离,也就是滑块目的地的坐标,如下图 滑块的运动就是从A点走到B点或C点的位置,需要把B或C的坐标,得到即可, 以A点为原点,水平距离为X,垂直距离为Y 1 // 整个拖拽框的控件元素 2 WebElement ele = driver.findElement(By.cssSelector(".cpt-bg-bar" )); 3 // 拖拽的宽度即x的距离 4 int x = ele.getSize().getWidth(); 5 // 拖拽的高度即y的距离 6

python实现抖音多线程下载无水印视频【附源码】

风格不统一 提交于 2020-11-22 14:40:29
昨天发了一个无水印解析,评论说想要多线程下载,还是比较简单的。 py文件同目录下创建url.txt,把链接一行一行复制进去,就能批量下载。 代码中的延时不能去掉,由于是多线程,速度较快,延时很重要。 import re import requests from concurrent import futures import time headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'} def download(_url): try: time.sleep(0.3) html3 = requests.head(_url,headers = headers) download_url = html3.headers['Location'] video_file = requests.get(download_url,headers = headers) file_name = download_url.split('=')[-1] print(file_name) except: print('Error') with open(file_name +

Python爬取抖音视频

我们两清 提交于 2020-11-22 14:23:02
最近在研究Python爬虫,顺便爬了一下抖音上的视频,找到了哥们喜欢的小姐姐居多,咱们给他爬下来吧. 最终爬取结果 好了废话补多说了,上代码! 1 # https://www.iesdouyin.com/aweme/v1/aweme/favorite/?user_id=86371592618 2 # &count=21&max_cursor=0&aid=1128&_signature=fBZqMxAcIH.WOSqz4s5eTHwWai&dytk=6849c66ff2a629554679fe#e4ad1343a5 3 # 分析url https://www.iesdouyin.com/share/user/86371592618 4 # 最终获取用户喜欢 5 import requests 6 7 url= " https://www.iesdouyin.com/share/user/86371592618 " 8 # 抖音本身反爬虫措施 9 headers= { 10 ' user-agent ' : ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 ' 11 } 12 # 获得dytk 13

抓取猫眼部分信息

陌路散爱 提交于 2020-11-22 06:31:28
import requests import re import json from multiprocessing import Pool def get_one_page(url): header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', } res = requests.get(url,headers=header) if res.status_code == 200: return res.text else: return None def parse_html(html): html.replace('\n','') pattern = ('<i class="board-index.*?">(. ?)</i>. ?<img data-src="(. ?)". ?</a>. ?<a href. ?>(. ?)</a>. ?<p class="star"(. ?)</p>. ?releasetime">(. ?)</p>. ?integer">(. ?)</i>. ?fraction">(.*?)</i>') items = re.findall

【Python3爬虫】网易云音乐歌单下载

╄→尐↘猪︶ㄣ 提交于 2020-11-21 05:44:37
一、目标:   下载网易云音乐热门歌单 二、用到的模块:   requests,multiprocessing,re。 三、步骤:    (1)页面分析:首先打开网易云音乐,选择热门歌单,可以看到以下歌单列表,然后打开开发者工具    因此我们需要请求的url就是https://music.163.com/discover/playlist,然后用requests.get()方法请求页面,对于返回的结果,用正则表达式进行解析,得到歌单名字和歌单id,解析的正则表达式如下: res = requests.get(url, headers=headers) data = re.findall('<a title="(.*?)" href="/playlist\?id=(\d+)" class="msk"></a>', res.text)      (2)得到歌单名字和歌单id后,构造歌单的url,然后模仿步骤(1)可以得到歌曲名字和歌曲id,解析的正则表达式如下: re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res.text)   再得到歌曲id后,构造歌曲的url,然后用requests.get().content方法下载歌曲,歌曲的url构造方法如下: "http://music.163.com/song/media

什么?你还没女朋友?教你如何借助Python俘获女孩子芳心!

风格不统一 提交于 2020-11-21 05:02:21
天气降温,感情却升温了? 上午刚到公司,就收到小Q发来的灵魂拷问: “Q仔!要不然下午请个假!我带你去精神科看看!?”我实在忍不了,脱口而出。 话音未落,前排的运营小花回头看向小Q,莞尔一笑,百媚横生。 这个闷骚小伙子什么时候勾搭上运营一枝花了?我正要追问,小Q看穿了我的意图,故作正经:“咳咳!工作了工作了!” 一大早喂我这么一碗狗粮还让我专心工作?你们以为不说我就没办法找到线索? 伟大的哲学家亚里士少德曾经说过“一段感情的开始,往往是通过朋友圈体现的”。我点开了小花的朋友圈,刷啊刷啊刷,终于在半个月前的一条朋友圈里发现了端倪。 小Q这个闷葫芦,竟然每天下班前发一封天气关心邮件来俘获芳心!脑回路真是奇清! 怪不得今天一上班就和我说Python像是个月老,牵着他们的情愫!因为这些用Python来实现并自动化,可以说是分分钟的事儿。我这个动手狂魔决定来复现一下,顺便搞搞事情。 整个过程只涉及到爬取天气和发送邮件,可以说一气呵成。 在敲代码的过程中,我意识到最难的部分,是想到把两者结合,并编辑土味关怀发送给目标用户了。毕竟都9102年了,虽然天气预报随手可看,但真正有几个人每天会关注呢? 要拿到天气的数据, www.tianqi.com 这个网址比较适合,所有数据都可以直接在源代码中拿到,天气小可爱长这个样子: 爬取只需简单伪装headers,就可以快乐的定位到所有想拿的数据了