python爬虫

day99 爬虫 scrapy介绍 结构介绍

拥有回忆 提交于 2020-03-01 22:07:07
scrapy介绍,架构介绍(框架)ghref scrapy就是爬虫界的django 爬虫框架,别人写好的代码,以后只需要在指定位置写指定代码即可 基于twisted:性能很高 五大组件 引擎:大总管,总的控制数据流动 调度器:去重,加入队列 下载器 :负责下载,加载数据 爬虫:主要写这,解析response和重新发起请求 项目管道:持久化相关 两大中间件 爬虫中间件:爬虫和引擎之间(用的少) 下载中间件:引擎和下载器之间(加代理,加cookie,修改user-agent,继承selenium) scrapy安装(windows) mac/linux:pip3 install scrapy windows: pip3 install scrapy(大部分都可以) -如果上面不行 -pip3 install wheel (xxx.whl文件安装模块) -下载pywin32:两种方式:1 pip3 install pywin32 2 下一个exe安装https://sourceforge.net/projects/pywin32/files/pywin32/ -下载twisted的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载完是一个xxx.whl文件 -执行pip3 install 下载目录\Twisted

为什么非要用Python做数据分析?Excle不好吗?

筅森魡賤 提交于 2020-03-01 16:07:58
Python能够这么火其中一个重要的原因是数据分析带起来的。Python的优点有很多,要是能运用到工作中,会发现工作的效率大大提升,当然涨薪也是再正常不过的事情。 互联网公司很多人都喜欢用Python完成自动化办公,表格处理,数据分析、图表制作等工作。无论你是运营、产品还是做研发在数不清的场景下,数据分析就是你的基本功,它不单单是一个职位,而是一个技能。 但是很多人一提到据分析,不知道该如何系统的去学习,知识零散又没有重点。常常毫无头绪,搞不清关键数据。有的人觉得花了很多钱,报了不少课程,但是收益缺微乎其微。 为了帮助大家更轻松的学好Python爬虫技术,Python数据分析,我给大家分享一套Python学习资料,推荐一个学Python爬虫技术的学习裙;五八三二六二一六八,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享! 敲重点,别急!这里给大家详细分享一下Python数据分析知识路线图 来源: https://www.cnblogs.com/ITbiancheng/p/12389866.html

编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法

纵然是瞬间 提交于 2020-03-01 01:47:40
这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一、分析豆瓣top页面,构建程序结构 1.首先打开网页http://movie.douban.com/top250?start,也就是top页面 然后试着点击到top100的页面,注意带top100的链接依次为 http://movie.douban.com/top250?start=0 http://movie.douban.com/top250?start=25 http://movie.douban.com/top250?start=50 http://movie.douban.com/top250?start=75 2.然后通过查看源码,发现电影名的代码如下: 肖申克的救赎 / The Shawshank Redemption 如图,因为有一些英文名等描述,通过正则抓取有些干扰,可能还需要后续过滤。 根据以上信息,此程序主要分以下3个步骤: 二、构建url地址池 抓取top100电影名称 依次打印输出 依次写出代码 1.构建url地址池。代码如下: mport urllib2 import re # ----------确定url地址池------------ pre_url = 'http:/

python爬虫面试宝典(常见问题)

一世执手 提交于 2020-03-01 01:43:29
这篇文章主要介绍了python爬虫面试宝典及常见问题小结,需要的朋友可以参考下 是否了解线程的同步和异步? 线程同步:多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 线程异步:在访问资源时在空闲等待时同时访问其他资源,实现多线程机制 是否了解网络的同步和异步? 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕 链表和顺序表储存时各自有什么优点? 1.顺序表存储 原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度 优点:存取速度高效,通过下标来直接存储 缺点:1.插入和删除比较慢,2.不可以增长长度 比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序 2.链表存储 原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题 优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可 缺点:查找速度慢,因为查找时,需要循环链表访问 使用redis搭建分布式系统时如何处理网络延迟和网络异常? 由于网络异常的存在,分布式系统中请求结果存在“三态”的概念,即三种状态:“成功”、“失败”、“超时(未知)” 当出现“超时

Python爬虫进阶 | 某监测平台数据加密逆向分析

不打扰是莪最后的温柔 提交于 2020-02-29 17:46:36
今天带大家分析一下某建筑市场监管平台的数据加密 链接: aHR0cDovL2p6c2MubW9odXJkLmdvdi5jbi9kYXRhL2NvbXBhbnk= 点击企业查询, 发现返回的数据是经过加密后的数据 1. 寻找返回的数据 既然数据是通过这个 url 返回的, 全局搜索url http://jzsc.mohurd.gov.cn/api/webApi/dataservice/query/comp/list?pg=0&pgsz=15 尝试全局模糊搜索 /query/comp/list 点击进入 js 函数 返回的结果是请求 url /dataservice/query/comp/list 得到的, 打上断点 点击搜索 一步一步调式js代码 调试过程就不一步一步分析了, 最终定位到, 感觉像我们想要的数据, 进入Console打印一下 t 和 e t 的打印结果 t 中 data 是 最初我们请求 http://jzsc.mohurd.gov.cn/api/webApi/dataservice/query/comp/list?pg=0&pgsz=15 所返回的加密后数据 然后接着执行下一步, 你会发现, e 这其中的数据不正是我们想要的数据 2. 分析加密方式 既然我们已经知道了数据的加密方式, 那我们就重点分析一下这个地方 其中t.data我们在第一步已经分出来了

爬虫之scrapy框架(二)

六月ゝ 毕业季﹏ 提交于 2020-02-29 17:32:07
目录 一、使用scrapy整站爬取网站信息 scrapy的真正起始爬取方法 使用scrapy整站爬取cnblogs网站信息大致思路 二、scrapy的请求传参 三、提升scrapy爬取数据的效率 四、scrapy的下载中间件 下载中间件使用代理池 scrapy settings详细介绍 五、selenium在scrapy中的使用流程 六、scrapy框架去重规则 七、scrapy-redis分布式爬虫 八、常见反扒措施 一、使用scrapy整站爬取网站信息 scrapy的真正起始爬取方法 当我们启动spider.py文件时,会执行我们设置好的 start_urls ,但是源码真正是如何处理的呢?我们进入scrapy.Spider查看源码,Spider类下有如下代码: def start_requests(self): cls = self.__class__#当前实例对象的类 if method_is_overridden(cls, Spider, 'make_requests_from_url'): warnings.warn( "Spider.make_requests_from_url method is deprecated; it " "won't be called in future Scrapy releases. Please " "override Spider

Python爬虫进阶 | 某音字体反爬分析

痴心易碎 提交于 2020-02-29 16:55:28
字体反爬案例 爬取一些网站的信息时,偶尔会碰到这样一种情况:网页浏览显示是正常的,用 python 爬取下来是乱码,F12用开发者模式查看网页源代码也是乱码。这种一般是网站设置了字体反爬。 1. 准备url 网址: https://www.iesdouyin.com/share/user/88445518961 2. 获取数据 分析字体加密方式 任务:爬取个人信息展示页中的关注、粉丝人数和点赞数据,页面内容如图 下 所示。 在编写代码之前,我们需要确定目标数据的元素定位。定位时,我们在 HTML 中发现了一些奇怪的符号,HTML 代码如下: 页面中重要的数据都是一些奇怪的字符,本应该显示数字的地方在 HTML 中显示的是""。 要注意的是,Chrome 开发者工具的元素面板中显示的内容不一定是相应正文的原文,要想知道 "" 符号是什么,还需要到网页源代码中确认。对应的网页源代码如下: </span><span class="follower block"> <span class="num"> <i class="icon iconfont follow-num">  </i> <i class="icon iconfont follow-num">  </i> <i class="icon iconfont follow-num">  </i> <i class=

python编程技术:Python爬虫常用小技巧之设置代理IP

老子叫甜甜 提交于 2020-02-29 00:45:46
篇文章主要给大家介绍了关于Python爬虫常用小技巧之设置代理IP的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站。假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些代理服务器来帮助你做工作,每隔一段时间换一个代理,这样便不会出现因为频繁访问而导致禁止访问的现象。 我们在学习Python爬虫的时候,也经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败。高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,所以下面这篇文章讲述一个爬虫技巧,设置代理IP 这里介绍一下免费获取代理IP的方法,这个方法的优点就是免费,但是缺点就是爬取后存在很多不能用的 IP地址取自国内髙匿代理IP网站,西刺代理,我们爬取首页IP地址就足够一般使用,或者你也可以爬取第一页,第二页…的 配置环境 安装requests库 安装bs4库 安装lxml库 具体代码 话不多说直接上代码吧 from bs4 import BeautifulSoup import requests import random def get_ip_list

小说爬虫(第一次写爬虫)

可紊 提交于 2020-02-28 20:24:42
小说爬虫(第一次写爬虫) 标签: python 爬虫 看了B站上的教程跟着写了一个爬虫小程序,感觉理论上并不难。 爬文本这应该是最好写的爬虫了。对python有一定的熟练度即可。 原理就是利用python的requests模板,模拟浏览器对服务器发送请求,然后对接收的html源代码文本进行字符串处理。 import requests import re import os # 第一步,打开有章节目录的网页. url0 = "https://www.xs4.cc/yingluejiutian/" headers = {'User-Agent': '123456abc'} #更改用户名称(可以使一些网站反爬虫手段失效). response = requests.get(url0, headers = headers) #发出请求. response.encoding = 'gbk' #汉字解码. #第二步,对网页的源代码进行文本处理,获得章节目录和网址. html = response.text #用正则表达式对文本进行筛选处理. bl = re.findall(r'<dl id="booklistBox">.*?</a></dd></dl>', html, re.S)[0] #re.S能匹配到包括换行,空格在内的 chapters = re.findall(r'<dd data=".

Python爬虫学习==>第十一章:分析Ajax请求-抓取今日头条信息

人走茶凉 提交于 2020-02-28 20:07:16
学习目的:   解决AJAX请求的爬虫,网页解析库的学习,MongoDB的简单应用 正式步骤 Step1:流程分析 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果; 抓取页面详情内容:解析返回结果,得到详情页的链接,并进一步抓取详情页的信息; 下载图片并保存数据库:将图片下载到本地,把页面信息及图片url保存至MongoDB; 开启循环及多线程:对多页面内容遍历,开启多线程并提高抓取效率。 Step2:实例分析 1. 打开今日头条搜索页,搜索“中超”,查看页面的请求方法为:GET 2. 创建一个Python文件:spider_ajax.py 3.网站url信息获取 4. 打印抓取的文章超链接和抓取的html内容 # -*- coding:utf-8 -*- import json from urllib.parse import urlencode from requests.exceptions import RequestException import requests def get_page_html(offset,keyword): data = { 'offset':offset, 'format':'json', 'keyword':keyword, 'autoload':'true', 'count':'20', 'cur