
爬虫精选
文章平均质量分 74
爬虫精选
周小董
专注于数据采集,数据治理及数据架构的研究,热爱分享一些经验,欢迎朋友来探讨交流。 附言:文章仅用于个人学习,如有侵权,请联系我删除,谢谢!
展开
-
[1315]Playwright中上下文管理new_context
相当于打开了一个浏览器,通过创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookies/缓存。使用创建context对象,context之间是相互隔离的,可以理解为轻量级的浏览器实例。在浏览器中有很多的标签页,这种都是通过浏览器上下文进行管理的,通过。原创 2024-12-20 22:45:00 · 383 阅读 · 0 评论 -
[1314]playwright page.wait_for_selector方法
state 参数可以设置等待状态,用四个状态:“attached”, “detached”, “hidden”, “visible”。除了这种文本的状态显示,还有一些弹出操作框也一样, 如下弹出框,默认情况下是隐藏了,点按钮后会弹出来。网页上的元素有不同状态,有些元素本来不在DOM里,点击某个按钮后才出现。有些元素是本来就已经在DOM里是隐藏的状态,点某个按钮后才变成显示状态。如果我们想让元素到达指定的状态再下一步操作,可以用。元素本身就在DOM里,只是状态发生改变:隐藏和显示。等待元素不可见(隐藏状态)原创 2024-11-14 23:15:00 · 1456 阅读 · 0 评论 -
[1291]Playwright教程
这种类型的python库有好多种,鼎鼎大名的selenium,还有playwright、Pyppeteer等。转载 2024-07-12 21:47:28 · 749 阅读 · 0 评论 -
[1277]使用隧道代理保持IP临时不变和切换IP
使用隧道代理动态版发现没有更换IP很有可能是HTTP客户端复用了之前建立的TCP连接,由此来加快网络请求。大家购买隧道带动态版就是为了每次请求更换IP,复用了之前的TCP连接就无法达到更换IP的效果,只需要在请求头中加入,显式地指出本次连接传输完成就立即关闭即可。当然,如果您不需要每次请求都切换IP,使用keep_alive机制可以加快你的请求,需要您根据业务实际情况进行判断。参考:https://shequ.codemao.cn/community/352779。原创 2024-05-01 09:00:00 · 1217 阅读 · 0 评论 -
[1248]requests在电脑开启代理的情况下无法正常发送请求
requests就是urllib封装的,结果居然神奇的能运行,去找了一下两个库之间的区别,但是基本都只能浅层的说说大概区别是啥,完全没有我要的底层逻辑原理,想来也不会有人去研究这个,除非requests库或者相关开发底层的家伙。网络的配置是公司有外网环境可以上外网,但是我需要一个和公司独立的代理IP,于是开启了其他的代理工具。一顿Google百度大法不能说毫无结果,只能说人的痛苦并不相通,唯一有类似状况的一个情况和我也似乎不太相同,去研究公司的防火墙白名单太复杂了,自己的电脑防火墙都关 了。转载 2023-12-16 12:00:00 · 384 阅读 · 0 评论 -
[1247]在windows中如何查看代理的地址和端口
请注意,这些步骤可能会根据不同版本的Windows有所不同,但基本的过程是类似的。如果你无法按照上述步骤找到代理的地址和端口,请参考你使用的Windows版本的相关文档或搜索特定的操作指南以获取更准确的信息。在「局域网设置」窗口中,你可以看到代理服务器的设置。在「网络和Internet」选项中,选择「Internet选项」。在弹出的「Internet属性」窗口中,切换到「连接」选项卡。在「控制面板」窗口中,选择「网络和Internet」。在「连接」选项卡中,点击「局域网设置」按钮。原创 2023-12-16 11:00:00 · 2922 阅读 · 0 评论 -
[961]webmagic
官网:http://webmagic.io/WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。特性:简单的API,可快速上手模块化的结构,可轻松扩展提供多线程和分布式支持一个示例:public class GithubRepoPageProcessor implements PageProcessor { private Site site = Site.me().setRetryTimes(3).setSleepTi转载 2021-04-24 23:26:11 · 251 阅读 · 0 评论 -
[890]scrapy之pipeline的使用
scrapy的pipeline是一个非常重要的模块,主要作用是将return的items写入到数据库、文件等持久化模块,下面我们就简单的了解一下pipelines的用法。pipeline核心方法open_spider(self,spider)open_spider()方法是在Spider开启的时候被自动调用的。在这里我们可以做一些初始化操作,如开启数据库连接等。其中,参数spider就是被开启的Spider对象。close_spider(self,spider)close_spider()方法是在原创 2020-08-12 21:17:47 · 3134 阅读 · 0 评论 -
[871]一个Scrapy项目下的多个爬虫如何同时运行
我们知道,如果要在命令行下面运行一个 Scrapy 爬虫,一般这样输入命令:scrapy crawl xxx此时,这个命令行窗口在爬虫结束之前,会一直有数据流动,无法再输入新的命令。如果要运行另一个爬虫,必须另外开一个命令行窗口。我们也知道,可以通过两条Python 代码,在 Python 里面运行 Scrapy 爬虫:from scrapy.cmdline import executeexecute('scrapy crawl xxx'.split())假设我们把这两行代码放在一个Scr转载 2020-07-19 21:43:42 · 6128 阅读 · 14 评论 -
[811]如何使用Chrome DevTools花式打断点
原文:Pause Your Code With Breakpoints作者:Kayce Basques Chrome DevTools & Lighthouse技术作家参考这份指南,结合自己手上的vue项目进行实践,可以说对原指南进行了plus,因为实践过程中会有很多指南之外的新发现。主要内容包括如下:预览几种不同的breakpoint类型代码行级(Line-of-code)断点代码里的某一行上打断点有条件的行级断点管理行级断点DOM变化级断点几种不同的DOM级转载 2020-05-21 22:35:41 · 2093 阅读 · 1 评论 -
[775]小象学院--爬虫知识点总结
第一课查找安装包pip search lxml设置 pip 源,配置 pip.conf ,自动设置源# mkdir ~/.pip/# vim ~/.pip/pip.conf[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simple也可以每次安装的时候制定 source# pip install –i https://p...原创 2020-03-19 19:06:12 · 952 阅读 · 0 评论 -
[774]python爬虫:正文提取第三方库goose
Goose 是一个 文章内容提取器 ,可以从任意资讯文章类的网页中提取 文章主体 ,并提取 标题、标签、摘要、图片、视频 等信息,且 支持中文 网页。它最初是由 http://Gravity.com 用 Java 编写的。python-goose 是用 Python 重写的版本。有了这个库,你从网上爬下来的网页可以直接获取正文内容,无需再用 bs4 或正则表达式一个个去处理文本。正文提取库go...原创 2020-03-19 19:04:24 · 1671 阅读 · 0 评论 -
[771]如何正确移除 Pyppeteer 中的window.navigator.webdriver
由于Selenium启动的Chrome中,有几十个特征可以被识别,所以在爬虫界已经没有以前那么受欢迎了。模拟浏览器的新秀Puppeteer异军突起,逐渐受到了爬虫界的关注。Puppeteer需要使用JavaScript来控制,如果你是用Python,那么就需要使用Pyppeteer.如果你使用模拟浏览器爬淘宝,你会发现,无论怎么修改参数,Selenium总是可以立刻被识别。但是如果你使用了本文的...转载 2020-03-11 22:31:02 · 2390 阅读 · 0 评论 -
[749]scrapy-redis实现start_requests功能
最近在用scrapy-redis的RedisSpider时,需要在起始请求中添加cookie,发现RedisSpider并不可直接使用start_requests,需要手动实现。分析可知RedisSpider继承于RedisMixin和Spider类,执行逻辑是RedisMixin的next_requests函数接收到了redis中data后,通过make_request_from_data函数...原创 2020-01-05 10:59:49 · 1437 阅读 · 0 评论 -
[648]python3 使用newspaper库提取新闻内容(readability,jparser)
GitHub:https://github.com/codelucas/newspaperNewspaper文档说明:https://newspaper.readthedocs.io/en/latest/Newspaper快速入门:https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.htmlNews...原创 2019-08-21 21:44:08 · 2559 阅读 · 0 评论 -
[633]pyppeteer驱动浏览器
当使用selenium去某宝或其他网站进行爬虫或者模拟登陆时,会出现滑动验证码,并且无论是用ActionChains滑还是手动滑,都会很委婉的告诉你“哎呀网络错误,请刷新”等等。why?爬虫都会碰到某些网站刚刚打开页面就被判定为:非人类行为,因为很多网站有对selenium的js监测机制。经过科学上网,查阅众多资料,发现selenium有一些特征值, 例如下面:window.navigat...原创 2019-07-07 17:41:31 · 6424 阅读 · 0 评论 -
[631]一行js代码识别Selenium+Webdriver
有不少朋友在开发爬虫的过程中喜欢使用Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现。先不说淘宝这种基于用户行为的反爬虫策略,仅仅是一个普通的小网站,使用一行Javascript代码,就能轻轻松松识别你是否使用了Selenium + Chromedriver模拟浏览器。我们来看一个例子。使用下面这一段代码启动Chrome窗口:from seleniu...原创 2019-06-30 23:02:07 · 2322 阅读 · 1 评论 -
[630]企查查api接口操作
企查查api接口中心:http://openapi.qichacha.com/DataCenter1、了解需求,申请接口。想要通过企业的统一信用代码或者企业名称查询企业的注册地址,所以申请的企业工商数据里面的企业关键字精确获取详细信息(Basic)。如果有别的需要,另外申请就可以了。在我的接口里面有我的key和我的密钥,注意,这两个后面东西会用到。2、了解请求参数设置以及返回数据的格式多说...原创 2019-06-30 22:56:15 · 16345 阅读 · 2 评论 -
[617]重写scrapy中间件之RetryMiddleware
重写scrapy中间件RetryMiddleware在爬取得过程中难免会遇到各种错误,如timeout或者404。而且在用ip代理池时,不是所有的代理都是稳定的,所以对于失败的代理我们需要做一些处理,例如删除操作。而由于不稳定代理引起的请求我们需要重新发起。这时候就有必要重写RetryMiddleware,来实现一些自己想要的操作。理解RetryMiddleware源码重写RetryMidd...转载 2019-06-11 23:23:29 · 2995 阅读 · 0 评论 -
[603]爬虫数据采集技术趋势-智能化解析
爬虫是做什么的?是帮助我们来快速获取有效信息的。然而做过爬虫的人都知道,解析是个麻烦事。比如一篇新闻吧,链接是这个:https://news.ifeng.com/c/7kQcQG2peWU,页面预览图如下:预览图我们需要从页面中提取出标题、发布人、发布时间、发布内容、图片等内容。一般情况下我们需要怎么办?写规则。那么规则都有什么呢?怼正则,怼 CSS 选择器,怼 XPath。我们需要对标...转载 2019-04-24 18:29:16 · 910 阅读 · 0 评论 -
[586]使用requests来爬取大众点评
看完本文,你可以:1、了解大众点评的CSS反爬虫机制2、破解反爬虫机制3、使用requests即可正确获取到评论数,平均价格,服务,味道,环境数据,评论文本数据;1.前言在工作生活中,发现越来越多的人对大众点评的数据感兴趣,而大众点评的反爬又是比较严格的。采取的策略差不多是宁可错杀一万,也不放过一个。有的时候正常浏览都会跳出验证码。另外,在PC端的展示数据是通过CSS来控制的,从网...原创 2019-03-25 18:42:33 · 3613 阅读 · 7 评论 -
[502]牛巴巴解析VIP电影
参考:https://www.jianshu.com/p/a6b84238586c。牛巴巴解析:http://mv.688ing.com/执行以下脚本,即可下载电影到文件《无双.mp4》点击一次可能访问不到,多次重复点击就能访问到了。原创 2019-01-22 18:17:50 · 14486 阅读 · 2 评论 -
[496]urllib.request.urlretrieve()函数
参考python document描述urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)函数说明将URL表示的网络对象复制到本地文件。如果URL指向本地文件,则对象将不会被复制,除非提供文件名。返回一个元组()(filename,header),其中filename是可以找到对象的本地文件...原创 2019-01-18 17:57:52 · 1040 阅读 · 0 评论 -
[492]selenium保存静态网页
用到的工具有chromedriver,pywin32和selenium。chromedriver安装配置过程自行百度,需要注意的是chromedriver和chrome的版本号需要一一对应,否则会出现不必要的报错。1、以新浪的一条新闻网址为例news_url = "http://news.youth.cn/sz/201812/t20181218_11817816.htm"driver.get...原创 2019-01-10 18:41:28 · 5693 阅读 · 2 评论 -
[491]pywin32模拟鼠标键盘操作
keybd_event(bVk, bScan, dwFlags, dwExtraInfo)第一个参数:虚拟键码(键盘键码对照表见附录);第二个参数:硬件扫描码,一般设置为0即可;第三个参数:函数操作的一个标志位,如果值为KEYEVENTF_EXTENDEDKEY则该键被按下,也可设置为0即可,如果值为KEYEVENTF_KEYUP则该按键被释放;第四个参数:定义与击键相关的附加的32位...原创 2019-01-10 18:40:52 · 10936 阅读 · 0 评论 -
[490]selenium文件下载参数设置
Firefox 文件下载对于Firefox,需要我们设置其Profile:browser.download.dir:指定下载路径browser.download.folderList:设置成 2 表示使用自定义下载路径;设置成 0 表示下载到桌面;设置成 1 表示下载到默认路径browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理...原创 2019-01-09 18:27:37 · 5689 阅读 · 1 评论 -
[489]selenium的一些js操作
控制滚动条高度1.滚动条回到顶部:js="var q=document.getElementById('id').scrollTop=0"driver.execute_script(js) 2.滚动条拉到底部js="var q=document.documentElement.scrollTop=10000"driver.execute_script(js)3.这里可以修改scr...原创 2019-01-09 18:26:38 · 980 阅读 · 0 评论 -
[462]用aiohttp和uvloop实现一个高性能爬虫
# -*- coding:utf-8 -*-import requests,asyncio,aiohttp,os,timedef run_time(fn): '''装饰器,用于查看图片下载运行时间''' def wrapper(*args, **kwargs): start = time.time() fn(*args, **kwargs)...原创 2018-12-21 18:25:08 · 1160 阅读 · 3 评论 -
[460]Web Scraper Chrome插件
摘要 : Web Scraper是一款可以从网页中提取数据的chrome网页数据提取插件,是一款非常好用的爬虫工具。我们常常有种强烈的需求就是不需要编程,也能够网页抓取。做新媒体运营也是,很多时候会需要用到数据来帮助工作。比如,我们登陆淘宝,京东等商务网站,抓取某一类商品的规格说明,价格,厂家等信息;我们希望可以抓取我们进入头条上的最热门的文章,也可以抓取我们自己的所有文章列表,发布时间,阅...转载 2018-12-21 18:22:28 · 3498 阅读 · 0 评论 -
[456]selenium触发不同接口短信验证码
参考:https://www.jianshu.com/p/555b0b424e06。原创 2020-07-19 22:38:45 · 9239 阅读 · 8 评论 -
[431]scrapy设置cookie
当我使用scrapy爬瓜子二手车的时候,响应的页面竟然不是正常的页面。然后想到了瓜子二手车可能需要验证cookie跟header。接着到浏览器复制了请求头的键值对,粘贴到了scrapy的settings文件的EFAULT_REQUEST_HEADERS的字典里面接着把COOKIES_ENABLED设置了为True,表示激活cookie。接着马上尝试访问瓜子二手车,结果还是不行。然后各种尝...原创 2018-11-20 18:32:25 · 3319 阅读 · 1 评论 -
[403]scrapy setting配置及说明
参考文档http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html#topics-settings-refAUTOTHROTTLE_START_DELAY = 3开始下载时限速并延迟时间AUTOTHROTTLE_MAX_DELAY = 60高并发请求时最大延迟时间AWS_ACCESS_KEY_ID它是用于访...原创 2018-09-18 17:08:06 · 7132 阅读 · 2 评论 -
[394]chrome浏览器的options参数
1. 背景在使用selenium浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的chrome浏览器,而我们平时在使用浏览器时,经常就添加一些插件,扩展,代理之类的应用。相对应的,当我们用chrome浏览器爬取网站时,可能需要对这个chrome做一些特殊的配置,以满足爬虫的行为。常用的行为有: 禁止图片和视频的加载:提升网页加载速度。添加代理:用于翻墙访问某些页面,或者...转载 2018-09-05 10:30:13 · 84495 阅读 · 2 评论 -
[387]scrapy模拟登陆
scrapy有三种方法模拟登陆方式:直接携带cookies找url地址,发送post请求存储cookie找到对应的form表单,自动解析input标签,自动解析post请求的url地址,自动带上数据,自动发送请求1、携带cookies登陆githubimport scrapyimport reclass Login1Spider(scrapy.Spider): ...原创 2018-08-26 23:27:19 · 563 阅读 · 0 评论 -
[330]Postman的Post请求方式的四种类型的数据
1. form-data就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有content-type来说明文件类型;content-disposition用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文...原创 2018-07-14 15:27:21 · 30181 阅读 · 0 评论 -
[316]python爬虫工具:user agent switcher
相比于在浏览器中右键检查,再将浏览器设置成手机端 如下图: user agent switcher给我们带来更多的是方便,一次设置好,就不怕每次麻烦的右键检查,设置成手机端的重复性操作了,这对于python爬虫算是一个比较技巧的地方。安装使用在火狐的附加组件中输入:user agent switcher如果找不到入口的话,在火狐浏览器中打开:https://addons...原创 2018-07-12 09:03:24 · 783 阅读 · 0 评论 -
[314]谷歌翻译
pip install requests#安装googletrans,需要安装requests依赖pip install googletrans#-*- coding:utf-8 -*-from googletrans import Translator'''ZH, // 中文 "zh-CN"EN, // 英语 "en"JP, //...原创 2018-07-12 09:01:40 · 5330 阅读 · 4 评论 -
[302]scrapy-deltafetch实现增量爬取
前言在之前的文章中我们都是对目标站点进行全量爬取,只要爬虫run起来就会对所有的链接都爬取一遍,这其实是很傻的做法,因为很多情况下我们并不需要爬取已经爬过的链接,除非你需要定期更新这个链接对应页面上的数据。好了,回归正题,本文介绍scrapy使用scrapy-deltafetch这个插件来实现增量爬取,这里以爬取【美食杰】上的菜谱信息为例。正文安装scrapy-deltafetch...转载 2018-07-11 08:53:04 · 1416 阅读 · 5 评论 -
[301]requests获取连接的IP地址
在接口自动化的时候,需要获取到连接的本地IP地址,方法如下import requestsrsp = requests.get("http://www.baidu.com", stream=True)print (rsp.raw._connection.sock.getpeername()[0])print (rsp.raw._connection.sock.getsockname(...原创 2018-07-11 08:52:54 · 22238 阅读 · 0 评论 -
[294]爬虫之scrapy-splash
什么是splash Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy...原创 2018-07-10 08:51:12 · 9881 阅读 · 7 评论