python爬虫

Python 爬虫 之 根据图片网址爬取图片

好久不见. 提交于 2020-02-08 04:02:23
Python 爬虫 之 根据图片网址爬取图片 目录 Python 爬虫 之 根据图片网址爬取图片 一、简单介绍 二、实现原理 三、注意实现 四、实现步骤 五、关键代码 一、简单介绍 Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。 爬虫的网页请求: 网页请求的过程分为两个环节: Request (请求):每一个展示在用户面前的网页都必须经过这一步,也就是向服务器发送访问请求。 Response(响应):服务器在接收到用户的请求后,会验证请求的有效性,然后向用户(客户端)发送响应的内容,客户端接收服务器响应的内容,将内容展示出来,就是我们所熟悉的网页请求 网页请求的方式也分为两种 : GET:最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。 POST:相比 GET 方式,多了以表单形式上传参数的功能,因此除查询信息外,还可以修改信息。 本节是为后面批量爬取图片做准备。 二

第13关. 各司其职的爬虫公司

对着背影说爱祢 提交于 2020-02-08 02:52:41
前两关,我们学习了能提升爬虫速度的进阶知识——协程,并且通过项目实操,将协程运用于抓取薄荷网的食物数据。 icon 可能你在体验开发一个爬虫项目的完整流程时,会有这样的感觉:原来要完成一个完整的爬虫程序需要做这么多琐碎的工作。 icon 比如,要导入不同功能的模块,还要编写各种爬取流程的代码。而且根据不同的项目,每次要编写的代码也不同。 icon 不知道你会不会有这样的想法:能不能有一个现成的爬虫模板,让我们拿来就能套用,就像PPT模板一样。我们不需要管爬虫的全部流程,只要负责填充好爬虫的核心逻辑代码就好。要是有的话,我们编写代码一定会很方便省事。 icon 其实,在Python中还真的存在这样的爬虫模板,只不过它的名字是叫框架。 icon 一个爬虫框架里包含了能实现爬虫整个流程的各种模块,就像PPT模板一开始就帮你设置好了主题颜色和排版方式一样。 icon 这一关,我们要学习的就是一个功能强大的爬虫框架——Scrapy。 Scrapy是什么 以前我们写爬虫,要导入和操作不同的模块,比如requests模块、gevent库、csv模块等。而在Scrapy里,你不需要这么做,因为很多爬虫需要涉及的功能,比如麻烦的异步,在Scrapy框架都自动实现了。 我们之前编写爬虫的方式,相当于在一个个地在拼零件,拼成一辆能跑的车。而Scrapy框架则是已经造好的、现成的车,我们只要踩下它的油门

爬虫cookie

╄→尐↘猪︶ㄣ 提交于 2020-02-08 01:01:06
关于selenium获取cookie然后实现免登陆 https://blog.csdn.net/weixin_40444270/article/details/80593058 cookie会过期 python selenium模块使用出错解决,Message: 'geckodriver' executable needs to be in PATH https://blog.csdn.net/rhx_qiuzhi/article/details/80296801 http://chromedriver.storage.googleapis.com/ 来源: CSDN 作者: ujn20161222 链接: https://blog.csdn.net/ujn20161222/article/details/104214225

python爬虫scrapy的LinkExtractor

你离开我真会死。 提交于 2020-02-08 00:17:07
使用背景:   我们通常在爬去某个网站的时候都是爬去每个标签下的某些内容,往往一个网站的主页后面会包含很多物品或者信息的详细的内容,我们只提取某个大标签下的某些内容的话,会显的效率较低,大部分网站的都是按照固定套路(也就是固定模板,把各种信息展示给用户),LinkExtrator就非常适合整站抓取,为什么呢?因为你通过xpath、css等一些列参数设置,拿到整个网站的你想要的链接,而不是固定的某个标签下的一些链接内容,非常适合整站爬取。 1 import scrapy 2 from scrapy.linkextractor import LinkExtractor 3 4 class WeidsSpider(scrapy.Spider): 5 name = "weids" 6 allowed_domains = ["wds.modian.com"] 7 start_urls = ['http://www.gaosiedu.com/gsschool/'] 8 9 def parse(self, response): 10 link = LinkExtractor(restrict_xpaths='//ul[@class="cont_xiaoqu"]/li') 11 links = link.extract_links(response) 12 print(links)

Python爬虫教程-爬取5K分辨率超清唯美壁纸源码

蓝咒 提交于 2020-02-07 18:56:03
简介 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印。 项目源码 # -*- coding:utf-8 -*- from requests import get from filetype import guess from os import rename from os import makedirs from os.path import exists from json import loads from contextlib import closing # 文件下载器 def Down_load(file_url, file_full_name, now_photo_count, all_photo_count): headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"} # 开始下载图片 with closing(get(file_url, headers=headers,

爬虫高性能相关

你离开我真会死。 提交于 2020-02-07 16:30:48
前言 之前讨论过python中多线程和多进程的不同。 由于我们使用的python解释器是Cpython,并不是线程安全的,所以python解释器为了解决这个问题,引入了GIL全局解释器锁。这导致了在同一个进程(一个python解释器下)并不能真正的实现多线程的并行执行,在某一确定的时刻永远只有一个线程在运行。 由此我们可以讨论: 1.当一个程序是I/O密集型时,是该采用多线程还是应该采用多进程? 我们知道当程序进入I/O(阻塞态)时,操作系统会自动剥夺我们程序的CPU使用权。如果我们程序采用多进程,即使给我们的程序分配另外的cpu,操作系统一样会剥夺其对CPU的使用权,这就导致了虽然我们消耗了很多的资源,但几乎对程序的性能没有提升。所以我们应该采用多线程。 2.当一个程序是计算密集型时,是该采用多线程还是应该采用多进程? 计算任务总是由cpu执行,如果我们的计算密集型程序采用多线程,虽然各个计算任务好像在并发执行,但是单位时间内cpu的计算次数是几乎固定的。这就导致了,性能没有额外的提升还额外多了线程之间的切换所带来的开销。 一、同步、异步、回调机制 1.同步调用 import requests def parse_page(res): print('解析 %s' %(len(res))) def get_page(url): print('下载 %s' %url)

Python爬虫入门教程一:环境准备

和自甴很熟 提交于 2020-02-07 10:33:28
环境 python:3.7.4 python库:requests-html(该库集成了requests和html解析的相关库,还加入了js渲染) requests-html教程: https://www.jianshu.com/p/72a1f57b333a requests-html官方文档: https://cncert.github.io/requests-html-doc-cn/ IDE:pycharm2019.3版本(社区版也可以,可能跟我的教程图片有出入) 浏览器:Chrome最新版 抓包工具:Fiddler最新版 教程 注:第一篇教程主要是了解一下需要哪些环境,环境方面的知识会比较啰嗦一点 一、开发工具准备 首先pycharm创建一个项目 接着创建一个python文件名字为Crawler.py 下载需要的requests-html库,pycharm选择左上角的 File->Settings,选择Project Interpreter(我的已经安装过了,所以会显示很多库,正常安装完python只有两个库) 先点击右上角的 "+" 下载requests-html库,下载之前先设置一下镜像源,加快下载速度 点击Manage Repositories,我这里设置了阿里和清华两个镜像源 阿里源:http://mirrors.aliyun.com/pypi/simple/ 清华源

Python爬虫:认识爬虫

你离开我真会死。 提交于 2020-02-07 08:00:50
一、爬虫的定义 定义:程序或者脚本,自动爬取万维网的数据的程序或者脚本 二、爬虫可以解决的问题 解决冷启动的问题 搜索引擎的根基,(通用爬虫) 帮助机器学习建立知识图谱 制作各种比价软件 三、爬虫工程师 初级爬虫工程师 web前端的知识:HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等; 正则表达式, 能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则; 会使用 XPath 等获取一些DOM 结构中的节点信息; 知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则; 能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。 中级爬虫工程师 了解什么是Hash,会简单的使用MD5,sha1等算法对数据进行Hash一遍存储 熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等 能设置user-agent进行数据爬取,设置代理等 知道什么是Request,什么是response,会使用Fiddler等工具抓取及分析简单地网络数据包;对于动态爬虫,要学会分析ajax请求,模拟制造post数据包请求,抓取客户端session等信息

初探python爬虫(三)——cookie和session

落花浮王杯 提交于 2020-02-07 04:17:24
##什么是cookie http请求是无状态的请求协议 不会记住用户的状态和信息 也不清楚你在者这之前的访问过什么 因为网站需要记录用户是否登录时, 就需要在用户登录后创建一些信息 并且要把这些信息记录在当前用户的浏览器中, 记录的内容就是cookie 用户使用当前的这个浏览器继续访问这个服务器时,会主动携带这个网站设置的cookie信息 cookie会在浏览器中记录信息,并且在访问时懈怠这个信息 1。浏览器更换或删除cookie后,信息丢失 2.cookie在浏览器中记录的信息时不安全的,因此不能记录敏感信息 session是在服务器端进行数据的记录 并且在给每个用户生成一个sessionID, 并且把这个sessionID设置在用户的浏览器中,也就是设置为cookie import requests #定义请求的url url = 'https://i.csdn.net/#/uc/profile' #定义请求头信息 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36', 'cookie': ''#这里的内容可以根据自己在登陆时查看cookie

爬虫

风格不统一 提交于 2020-02-07 01:19:02
爬虫 什么是爬虫?就是伪造浏览器,下载网页源代码,再从源代码获取需要的数据,一般分为两步: 1、伪造浏览器下载网页(requests模块) 2、对网页的内容进行结构化处理(BeautifulSoup模块) requests模块 安装:pip install requests 下面是这个模块常用到的方法、属性 # 实例化对象,把所有的内容都封装到对象里 response = requests.get(url="https://XXXXXXX") # 获取状态码 print(response.status_code) # 获取文本内容, print(response.text) # 但此文本内容是乱码,因为默认用的是utf8,而此文本用的是gbk # 设置编码 response.encoding = 'gbk' print(response.text) # 获取二进制格式的文本内容 print(response.content) BeautifulSoup模块 安装:pip install BeautifulSoup4 这个模块是对下载的文本内容进行结构化处理的 常用的属性、方法如下: # 把文本传过去,然后用python自带的html解释器处理,进行结构化,返回的是顶级结构 soup = BeautifulSoup(response.text, 'html.parser') #