版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python爬虫实例教程课程介绍本课程的主要内容
本课程主要讲解如何利用Python编写网络爬虫,爬取网上数据。课程中你将学习到以下内容1编写定向爬虫各种技巧2Python网络爬虫的技术概况3开发环境的搭建4网页请求基础,网页解析基础课程中你将学习到以下内容5编写定向爬虫6下载图片与多线程爬虫7模拟登录与验证码处理8用对反爬虫的各种策略课程中你将学习到以下内容9使用IP代理10动态网页的爬取11Selenium库12爬虫数据存储到数据库课程中你将学习到以下内容13爬虫数据去重14爬虫数据处理与分析15爬虫数据可视化课程优势系统性通俗易懂12课程优势3实战
+实例4作业+直播答疑5持续更新谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华认识网络爬虫讲师:日月光华答疑群:945189407本节主要内容本节介绍爬虫相关基础概念1什么是网络爬虫2爬虫分类3简单爬虫架构4爬虫应用场景什么是网络爬虫网络爬虫是一种程序,它的主要目的是将互联网上的网页下载到本地并提取出相关数据。网络爬虫可以自动化的浏览网络中的信息,然后根据我们制定的规则下载和提取信息。简单网络爬虫的架构网络爬虫应用场景1搜索引擎2抓取商业数据3舆情分析4完成自动化任务谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华搭建开发环境答疑群:945189407代码运行环境本课程代码运行环境:Python3.6Windows10下载和安装Python一是Python官网二是下载和安装Anaconda官网(/)官网下载安装清华镜像(/anaconda/archive/)Anaconda下载安装开发编辑器本课程常用开发编辑器:JupyterNotebookPycharmNotepad++JupyterNotebookJupyterNotebook(IPythonnotebook)是一个基于网页的交互式笔记本,支持运行多种编程语言。JupyterNotebook的本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdownPycharmPycharm是一款非常优秀的pythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具Pycharm下载社区版本的Pycharmhttps:///pycharm/download/#section=windowsNotepad++官网下载/谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华认识HTTP请求答疑群:945189407什么是HTTP请求我们可以简单的把HTTP请求理解为从客户端到服务器端的请求消息。也就是说,无论是真正的一个人在操作浏览器还是一个爬虫,当希望从服务器请求服务或信息时,就需要首先向服务器端发出一个请求,然后服务器返回响应,最后连接关闭,这就是Web服务的流程。HTTP请求信息·请求方法·请求头部·请求正文1.GET方法
请求指定的页面信息,并返回实体主体。
2.POST方法
向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。HTTP请求方法1.GET方法
请求指定的页面信息,并返回实体主体。
2.POST方法
向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。HTTP请求方法其他的请求方法如
HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE等,
实际编写爬虫中较少用到。HTTP请求方法请求头部包含许多有关客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。HTTP请求头部一般网站服务器最常见的反爬虫措施就是通过读取请求头部的用户代理(UserAgent)信息来判断这个请求是来自正常的浏览器还是爬虫。HTTP请求头部查看一下浏览器的请求头谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Requests基础答疑群:945189407Requests库的安装
pipinstallrequests1.Requests请求方法
2.Requests库的响应对象
3.响应状态吗
4.定制请求头
Requests的使用5.重定向与超时
Requests的使用谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Urllib库简介答疑群:945189407urllib库的简介Python标准库·urllib.request打开和读取URL
·urllib.error包含Urllib.request各种错误的模块
·urlib.parse解析URL
·urllib.robotparse解析网站robots.txt文件Urllib库四个模块·发送GET请求
·模拟浏览器发送GET请求
·POST发送一个请求
·URL解析Urllib库的使用谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网页解析基础
认识HTML答疑群:945189407HTML是一种超文本标记语言,简单理解就是为某些字句加上标志的语言,从而实现预期的特定效果,网页正是由这种HTML语言所编写出来的。作为一套标记语言,基本上只要明白各种标记的用法就算学会了HTML。认识HTML源码HTML的语法格式分为嵌套与非嵌套两类,嵌套格式为<标记>...</标记>,非嵌套仅有<标记>。此外,根据标记的不同,有的标记附带有属性参数,则表示为<标记
属性="参数值">。HTML语法特点通过Scrapy文档服务器的一个样例页面来认识一下HTML源码HTML例子<html><head><basehref='/'/><title>Examplewebsite</title></head><body><divid='images'><ahref='image1.html'>Name:Myimage1<br/><imgsrc='image1_thumb.jpg'/></a><ahref='image2.html'>Name:Myimage2<br/><imgsrc='image2_thumb.jpg'/></a><ahref='image3.html'>Name:Myimage3<br/><imgsrc='image3_thumb.jpg'/></a><ahref='image4.html'>Name:Myimage4<br/><imgsrc='image4_thumb.jpg'/></a><ahref='image5.html'>Name:Myimage5<br/><imgsrc='image5_thumb.jpg'/></a></div></body></html>HTML例子LXMLBeautfulsoup正则表达式常用网页解析工具谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网页解析基础
Xpath语法答疑群:645853094lxml是一个网页解析库。XPath是一门在XML文档中查找信息的语言。XPath可用来在XML文档中对元素和属性进行遍历。安装:pipinstalllxmlXpath语法与lxml库的用法如果安装失败,可以从/~gohlke/pythonlibs/查找lxml,下载与你的电脑匹配的whl格式文件,进入刚才下载文件所在的目录,pipinstallwhl文件名即可安装提示通过网页查看节点关系父节点子节点平行节点节点关系nodename 选取此节点的所有子节点。 从根节点选取。// 从根节点开始匹配,而不考虑它们的位置。/text()选取文本@ 选取属性。最有用的路径表达式:路径表达式
li 选取li元素的所有子节点。/li 选取根元素li。注释:假如路径起始于正斜杠(/),则此路径始终代表到某元素的绝对路径!//@href 选取名为href的所有属性节点选取实例li/a 选取属于li的子元素的所有a元素。//a选取所有a子元素,而不管它们在文档中的位置。li//a 选择属于li元素的后代的所有a元素,而不管它们位于li之下的什么位置。//@href 选取名为href的所有属性节点选取实例fromlxmlimportetreetext='''<div><ul><liclass="item-0"><ahref="link1.html">firstitem</a></li><liclass="item-1"><ahref="link2.html">seconditem</a></li><liclass="item-inactive"><ahref="link3.html">thirditem</a></li><liclass="item-1"><ahref="link4.html">fourthitem</a></li><liclass="item-0"><ahref="link5.html">fifthitem</a></li></ul></div>'''html=etree.HTML(text)lxml使用实例谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华抓取百度首页小实例答疑群:945189407发起请求,下载百度首页解析百度首页,提取我们需要的数据学习使用chrome浏览器辅助我们的爬取本节知识点4.学习下载网页中的图片知识点谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网页解析基础
Xpath高级用法答疑群:945189407提取属性就是说我们想要提取的内容是某个标签里面的某个属性的值使用如下形式获取:@属性提取属性值selector.xpath('//li[starts-with(@class,"item-")]')根据属性共同点获取元素如果提取出来的元素里面包含着子元素或者说提取出来的是一个代码段,可以对它继续使用XPath查找。对代码段继续使用XPath查找>>>all_text=selector.xpath('string(//ul)')从代码段中提取出所有的文本谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网页解析基础
Beautifulsoup简介答疑群:945189407使用如下命令安装BeautifulSoup:>pipinstallbeautifulsoup4注意这里是beautifulsoup4。安装完成后在Python解释器中引入:>>>frombs4importBeautifulSoupBeautifulSoup安装和导入BeautifulSoup的解析器frombs4importBeautifulSoupsoup=BeautifulSoup(open("index.html"))soup=BeautifulSoup(“<html>data</html>”,‘lxml’)BeautifulSoup的构造方法使用soup.x(x代表标签名)这种形式可以获得这个标签的内容在标签后面加上.string,就可获取标签内的文本可以使用标签[属性]这种形式来获取属性值可以使用get方法获取属性BeautifulSoup基本用法(1)find_all方法。find_all方法搜索当前标签的所有子节点,并判断是否符合过滤器的条件,find_all方法是BeautifulSoup最常用的方法。soup.find_all('b')soup.find_all(["a","b"])soup.find_all(pile("t"))BeautifulSoup标准选择器soup.find_all(id="link2")soup.find(text=pile("sisters"))soup.find_all(href=pile("elsie"))soup.find_all(id=True)soup.find_all(href=pile("elsie"),id='link1')BeautifulSoup标准选择器soup.find_all(text="Elsie")soup.find_all(text=pile("Dormouse"))soup.find_all("a",limit=2)soup.find_all("a")soup("a")BeautifulSoup标准选择器Find()方法find_all()方法将返回文档中符合条件的所有tag,尽管有时候我们只想得到一个结果.比如文档中只有一个<body>标签,那么使用find_all()方法来查找<body>标签就不太合适,使用find_all方法并设置limit=1参数不如直接使用find()方法BeautifulSoup标准选择器get_text()方法如果只想得到标签中包含的文本内容,可以用get_text()方法,这个方法获取到标签中包含的所有文本内容,包括子孙节点中的文本内容,并将结果字符串返回BeautifulSoup标准选择器谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网页解析基础
正则表达式简介答疑群:945189407正则表达式是用于处理字符串的强大工具,其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同。正则表达式拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式的语言里,正则表达式的语法都是一样的。正则表达式无论是编写还是阅读,都相对复杂,这里只做简单入门介绍。正则表达式简介Python正则表达式Python标准库中的re模块提供正则表达式全部功能,可以直接引入:>>>importrecompile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。正则表达式方法谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华基础实例
爬取大前端网站答疑群:945189407原为爬取Q房网,
但因Q房网改版,使用了cookies反爬虫,不适合在这里使用答疑群:945189407本课程的知识点
一、学会爬取基础爬虫的编写二、学会如何实现翻页爬取三、学会深层网页的爬取四、学会简单保存数据五、学会下载图片
本课程的知识点六、学会深层网页的爬取七、学会组织代码八、学会分析网站九、学会使用chrome浏览器辅助分析爬取
编写爬虫实例的一般步骤
1、对网站进行分析
2、编写部分代码
3、完善代码谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网站保持登录机制答疑群:945189407本课程的知识点
一、了解如何保持用户登录状态二、学会使用cookies登录网站
网站保持登录机制
1、cookies
2、session谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华网站常见反爬虫策略
及应对技巧答疑群:945189407常见的反爬虫策略一、通过Headers反爬虫二、基于用户行为反爬虫三、动态页面反爬虫四、其他
应对反爬虫的方法
1、设置Headers
2、使用IP代理或加大请求间隔时间3.使用Selenium框架谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华使用代理IP答疑群:945189407什么是代理IP所谓代理IP,就是代理用户去取得网络信息的IP地址。代理IP可以帮助爬虫掩藏真实身份,突破IP访问限制,隐藏爬虫的真实IP,从而避免被网站反爬虫禁止。
Requests中使用IP代理的方法
importrequests
proxies={"http":"0:3128","https":"0:1080",}requests.get("",proxies=proxies)
如何获得代理IP一是从网上寻找免费的代理IP。有很多提供免费代理IP的网站,如西刺代理等,我们可以使用这些网站提供的免费代理IP。使用免费代理的缺点很多,从实用性、稳定性以及安全性来考虑,不推荐大家使用免费的代理IP。网上公布的代理IP不一定是可用的,很可能在使用过程中会发现代理IP不可用或者已失效的情况。二是购买代理IP,有很多提供这方面服务的网站,大家可以搜索看一下。一般购买的代理IP可用性和稳定性都相对较好,缺点是需要一定的成本。我们在练习写爬虫的时候,可以使用免费代理,如果在生产环境中,免费代理IP很难满足需求,最好是购买高质量的代理IP。谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华动态网页爬取答疑群:945189407什么是动态网页所谓的动态网页,是指跟静态网页相对应的一种网页编程技术。静态网页随着HTML代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非修改页面代码,而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。什么是动态网页动态网页一般使用叫做AJAX的快速动态创建网页技术,通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分内容进行更新。什么是动态网页总结起来,对于编写网络爬虫来说,我们可以通过两种简单办法判断一个网页是否是动态网页:1.是否在URL不变或者未刷新的情况下,能够加载新的信息。2.网页的源代码结构与显示不同。
动态网页的爬取办法1.分析页面请求,查找真实请求的URL2.使用Selenium模拟浏览器行为谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华动态网页爬取
——selenium简介答疑群:945189407selenium简介Selenium是个自动化测试工具,也可用来解决动态网页的加载和渲染问题。Selenium可以驱动浏览器模拟人的操作,它支持各种浏览器,包括Chrome、Safari、Firefox等主流界面式浏览器Selenium简介我们讲解Selenium配合Chrome浏览器来爬取网页内容,这是因为GoogleChrome最新版本发布了一个新的实用功能:HeadlessChrome,也就是无界面Chrome浏览器,这对提高爬虫效率非常有利。Selenium简介Selenium库不是Python标准库,使用前需要安装,你可以使用pip来安装:pipinstallseleniumSelenium简介Selenium如果配合Chrome浏览器使用,并且需要驱动浏览器的chromedriver驱动程序Selenium简介Selenium需要使用chromedriver来驱动Chrome浏览器,我们可以从下面网址下载与操作系统对应的版本:/mirrors/chromedriver/Chromedriver与Chrome版本映射表chromedriver版本 支持的Chrome版本v2.40 v66-68v2.39 v66-68v2.38 v65-67v2.37 v64-66v2.36 v63-65v2.35 v62-64v2.34 v61-63v2.33 v60-62v2.32 v59-61Selenium简介Selenium在使用chromedriver时,既可以把chromedriver添加到系统的环境变量,也可以直接在代码中指明chromedriver所在的目录,为了简单,我们会在代码中直接添加chromedriver所在的路径地址,从而省去了添加到系统环境变量的操作。Selenium简介Selenium在使用chromedriver时,既可以把chromedriver添加到系统的环境变量,也可以直接在代码中指明chromedriver所在的目录,为了简单,我们会在代码中直接添加chromedriver所在的路径地址,从而省去了添加到系统环境变量的操作。Selenium简介我们知道代码的运行速度相对于浏览器打开速度而言是相当快的,如果代码中没有执行等待或确认网页已经完全打开,很有可能代码后续执行就会报错。这就要求在执行代码过程中添加执行等待浏览器的代码谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程
讲师:日月光华爬虫去重答疑群:945189407爬虫去重的分类一、基于URL的去重二、基于内容的去重爬虫去重的方案一、使用set数据结构去重(内存去重)二、使用Redis缓存数据库去重三、“位”去重,如布隆过滤爬虫去重的实现一、使用摘要算法把要去重的内容转换为一个固定的长度二、再对摘要进行去重什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。什么是摘要算法呢?摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。什么是摘要算法呢?摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。摘要算法的实现Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等摘要算法的实现MD5是最常见的摘要算法,速度很快,生成结果是固定的128bit字节,通常用一个32位的16进制字符串表示。SHA1的结果是160bit字节,通常用一个40位的16进制字符串表示。摘要算法的实现MD5是最常见的摘要算法,速度很快,生成结果是固定的128bit字节,通常用一个32位的16进制字符串表示。SHA1的结果是160bit字节,通常用一个40位的16进制字符串表示。谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程
讲师:日月光华Scrapy框架基础答疑群:945189407Scrapy的安装在Linux和Mac上安装Scrapy相对简单,只要在命令行模式下使用pip来安装即可:>pipinstallscrapyScrapy的安装在Windows平台上安装Scrapy:先安装Twisted。可以从这个地址:/~gohlke/pythonlibs/#twisted下载与我们的计算机和Python版本相对应的二进制whl安装包Scrapy的安装安装好了Twisted之后,再重新执行:>pipinstallscrapy认识Scrapy目录结构pachong1/scrapy.cfgpachong1/__init__.pyitems.pymiddlewares.pypipelines.pysettings.pyspiders/__init__.py认识Scrapy目录结构1.scrapy.cfg是项目的配置文件,一般不用设置,scrapy.cfg所在的目录就是项目的根目录。2.items.py文件是保存爬取到数据的容器,我们要爬取什么数据就是在这里面定义认识Scrapy目录结构3.pipelines.py处理已经爬取到的数据,比如说,要把爬取的item去重或者保存到数据库,就需在这个文件里面定义。4.middlewares.py是中间件文件,主要用来对所有发出的请求、收的到的响应或者spider做全局性的自定义设置,后面章节会有专门的介绍。认识Scrapy目录结构5.settings.py是Scrapy设置文件。6.spiders文件夹用于存放编写的爬虫代码,也就是说,我们的爬虫主要逻辑就是在这里面定义的,可以在这个文件夹里定义多个爬虫,目前这个文件夹里面还没有爬虫文件,因为目前还没有生成或编写爬虫文件。谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Scrapy常用命令行工具答疑群:945189407scrapystartprojectmyproject这条命令用来创建一个Scrapy爬虫项目,myproject代表项目名称。scrapygenspidermydomain这条命令在项目中使用基础spider模板生成一个爬虫文件,所以此命令需要在项目目录中运行。scrapycrawlmyspider在项目中启动爬虫命令,myspider代表爬虫名称。
scrapyshell[url]全局命令。以给定的URL(如果给出)或者空(没有给出URL)启动Scrapyshell。这个命令经常用来在交互模式下检查XPath语法提取数据是否正确
scrapyview[url]全局命令。在浏览器中打开给定的URL,并以Scrapyspider获取到的形式展现。
scrapylist这条命令需要在项目中运行,它会列出当前项目中所有可用的spider(每行输出一个spider)。
scrapyparse<url>[options]这条命令需要在项目中运行,它获取给定的URL并使用相应的spider分析处理。如果我们提供--callback选项,则使用spider的对应方法处理,否则使用parse解析。这条命令也可以帮助我们检查解析函数是否正确。谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Scrapy的爬虫类和模板答疑群:945189407Scrapy为我们提供了四种可用的爬虫模板Availabletemplates:basiccrawlcsvfeedxmlfeedScrapy为我们提供了四种可用的爬虫模板1.基础Spider类,这是最简单的爬虫类,我们在生成模板时默认就是使用基础Spider类生成了基础爬虫模板,每个其他的爬虫类都必须继承自该类。
Scrapy为我们提供了四种可用的爬虫模板2.CrawlSpider类,这是爬取一般网站常用的爬虫类。其定义了一些规则(rule),方便我们跟进某种类型的链接。我们可以在命令行中指定使用crawl模板来生成基于CrawlSpider类的爬虫:>scrapygenspider-tcrawlsinaScrapy为我们提供了四种可用的爬虫模板3.XMLFeedSpider类,这是一个设计用于通过迭代各个节点来分析XML源(XMLfeed)的爬虫类。4.CSVFeedSpider类,该爬虫类除了其按行遍历而不是节点之外其他和XMLFeedSpider十分类似。基础Spider类基础Spider类,也就是scrapy.Spider类,是最基本的爬虫类,每个其他的爬虫类必须继承自该类。scrapy.Spider并没有提供什么特殊的功能,其仅仅提供了start_requests()的默认实现基础Spider类实例爬取我爱我家二手房房源的房产标题、总价及房源所属经纪人这三项Scrapy图片下载Scrapy为我们提供了一个可重用的itempipelines,一般称之为ImagesPipeline和FilesPipeline。Scrapy图片下载这两种pipeline都实现了以下特性:·避免重新下载最近已经下载过的数据·指定存储文件路径Scrapy图片下载ImagesPipeline还有一些专门处理图片的功能:·将所有下载的图片转换成通用的格式(JPG)和模式(RGB)·生成缩略图·检测图像的宽/高,确保它们满足最小限制。谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华CrawlSpider答疑群:945189407CrawlSpider类CrawlSpider类是爬取一般网站最常用的spider类。CrawlSpider允许我们根据一定的URL规则提取跟进的链接,这是因为一般网站设计其URL构造都符合一定的规则,CrawlSpider正是利用这种URL构造规则跟进链接,实现对全网站的爬取。rulesrules是规则对象的集合,集合中的每条Rule对爬取网站的动作定义了特定表现,也就是说我们的爬取规则就是在rules里面定义,如果多个Rule匹配了相同的链接,则根据它们在本属性中被定义的顺序,第一个会被使用。link_extractorlink_extractor,也叫做链接提取器,我们使用它来定义具体的爬取规则,即如何从爬取到的页面提取链接。link_extractor是链接提取器与方便的过滤选项CrawlSpider实例我们使用CrawlSpider来编写房天下北京二手房房源爬虫谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Scarpy架构答疑群:945189407Scarpy架构1.ScrapyEngineScrapy的核心引擎,负责控制数据流在系统所有组件中流动,并在相应动作发生时触发事件,可以看作整个框架的总指挥。
Scarpy架构2.调度器(Scheduler)调度器可以看作是一个优先级队列,它从核心引擎接受request并将他们入队,以便之后引擎请求它们时按照优先级提供给引擎。Scarpy架构3.下载器(Downloader)下载器负责与网络交互,主要作用是获取页面数据并提供给引擎,而后提供给spider做解析,下载器在整个Scrapy架构中应该是负担最重的组件,由于其需要与网络交互,直接影响Scrapy的爬取效率。Scarpy架构4.SpidersSpiders是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进URL的类。这是对用户编写爬虫而言是最重要的组件,我们可以在同一个项目中编写多个spider,每个spider负责处理一个特定(或一些)网站。Scarpy架构5.ItemPipelineItemPipeline负责处理被spider提取出来的item。典型的处理有清理、验证及持久化(例如存取到数据库中)。我们将在第十四章中讲解使用ItemPipeline存储数据到数据库。Scarpy架构6.下载器中间件(Downloadermiddlewares)下载器中间件是在引擎及下载器之间的特定钩子,负责处理引擎传递给下载器的request和下载器传递给引擎的response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。Scarpy架构7.Spider中间件(Spidermiddlewares)Spider中间件是在引擎及Spider之间的特定钩子,处理spider的输入(response)和输出(items及requests)。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Scrapy应对反爬虫答疑群:945189407设置用户代理(User-agent)设置UserAgent模仿正常浏览器是一个常用的应对服务器反爬虫策略。在Scrapy框架中可以用四种方式设置UserAgent设置下载延迟可以在settings.py中找到DOWNLOAD_DELAY这一项,去掉前面的注释:DOWNLOAD_DELAY=3这样就将下载延时设置为了3秒,DOWNLOAD_DELAY支持设置为小数。设置Cookies在settings.py中去掉#COOKIES_ENABLED=False这一行前面的注释即可禁用Cookies:COOKIES_ENABLED=False
自动限速扩展可以通过settings设置自动限速扩展,找到settings中的#AUTOTHROTTLE_ENABLED=True这一项,去掉注释即可打开自动限速扩展下载器中间件所谓下载器中间件是介于Scrapy引擎和Scrapy下载器之间的的钩子框架。Scrapy的所有发出的请求(request)和请求响应(response)都会经过下载器中间件设置随机用户代理编写中间件,在房天下爬虫项目中找到middlewares.py文件,我们就在这个文件中编写随机变换UserAgent中间件
设置随机IP代理设置随机变换的IP代理可以说是应对反爬虫的利器,尤其对于大型爬取任务,设置随机变换的IP代理能起到比较好的反反爬虫作用。进入项目的middlewares.py文件,编写随机更换代理IP的类谢谢大家讲师:日月光华答疑群:945189407Python爬虫实例教程讲师:日月光华Scrapy登录与提交数据答疑群:945189407Request对象Scrapy使用Request来执行请求并返回响应对象登录网站一个相对简单的办法就是使用cookies参数,利用网站的保持登录机制,给它设置一个登录后的cookies信息,从而实现对网站深层页面的抓取。FormRequest类Scrapy提供的FormRequest类是在scrapy.Request类的基础上为爬取过程中处理HTML表单做了一些扩展。FormRequest类FormRequest在Request所有参数的基础上添加一个新的参数:formdata,这个参数允许我们以字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026税务六部门面试题及答案
- 2026年哈尔滨幼儿师范高等专科学校高职单招笔试综合素质历年参考题库含答案解析
- 2026年冀中职业学院高职单招笔试综合素质历年参考题库含答案解析
- 2026年云南经济管理学院高职单招笔试职业技能测验历年参考题库含答案解析
- 2026年上海工商职业技术学院高职单招笔试语文历年参考题库含答案解析
- 2026南平邵武市人民检察院招聘驾驶员1人考试备考试题及答案解析
- 2026河北邢台市南和区临时公益性岗位招聘1人笔试模拟试题及答案解析
- 简阳市卫生健康局简阳市禾丰中心卫生院2026年补充招聘编外人员(2人)笔试模拟试题及答案解析
- 2026浙江台州温岭市医疗急救指挥中心招聘1人考试模拟试题及答案解析
- 2026广发银行成都分行社会招聘(10月)考试参考题库及答案解析
- 高中二年级主题班会与家长会融合课教学设计-奋斗征程中的习惯、心态与家校同行
- 2026年教师资格考试小学面试音乐试题与参考答案
- 部编版新教材道德与法治五年级上册第三单元进行改革开放教学设计
- 有限空间作业监理实施细则
- 2026及未来5年中国虾皮市场数据分析及竞争策略研究报告
- 初中道德与法治七年级《潜能觉醒·多维赋能》跨学科主题学习教案
- 2025(某大型国企)财务岗位招聘笔试试卷含答案
- 2026年高考全国1卷语文高考真题含答案
- 土建管理实施方案
- 医疗机构职业暴露后消毒隔离与应急处置全流程
- 2026陕煤集团榆林化学有限责任公司招聘(162人)笔试模拟试题及答案解析
评论
0/150
提交评论