python爬虫

【Python3 爬虫】U22_csv文件处理

ε祈祈猫儿з 提交于 2020-04-04 13:11:22
目录 1.什么是csv? 2.csv文件的两种读取方式 2.1 reader读取 2.2 DictReader读取 3.csv文件的两种写入方式 3.1 writer写入 3.2 DictWriter写入 1.什么是csv? 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。 2.csv文件的两种读取方式 2.1 reader读取 import csv with open("student.csv","r") as f: # reader是一个迭代器 reader = csv.reader(f) titles = next(reader) # 跳过标题行 for x in reader: name = x[0] age = x[1] print("姓名:%s" %name, "年龄:%s" %age) 输出结果: 姓名:张三 年龄:15 姓名:李四 年龄:16 姓名:王五 年龄:17 使用reader读取的话,存在一个问题,在获取数据的时候,通过下标来获取列,现在第一列式name,如果我把第一列修改为id列,那么数据获取将会出现问题,所以有了 DictReader 2.2 DictReader读取 如果想要获取数据的时候通过标题来获取,那么可以使用 DictReader

为什么很多人入门选择Python爬虫?

天大地大妈咪最大 提交于 2020-04-03 18:37:58
  随着人工智能、大数据时代的到来,Python这门编程语言也出现在大家的视野之中,更多人都开始关注Python。Python语法易懂、编写简洁,拥有丰富的库,作为人工智能的首选语言,Python是非常值得学习的。那么学Python做爬虫有前途吗?为大家介绍一下。   为什么很多人入门选择爬虫?   其实原因很简单,是因为Python领域中最容易入门的方向就是爬虫,为什么爬虫呢?   市场需求旺盛,大数据时代到来,除了大公司有能力生产数据之外,其他公司都是依靠爬虫来获取数据,第二爬虫的技术比较要求低,只要稍微有一定的基础,认真学习一段时间之后,就可以做主流爬虫技术,需求大,简单易学,自然会成为大家的首选。   其实说句实在话,爬虫这个行业只会越来越难做的,并且门槛会变得更高。因为发爬技术会变得更加强烈,需要掌握主动权,随时随地改变策略。在人工智能时代,很多网站开始收集个方面行为,通过机器学习进行判断。   未来爬虫行业,会出现很多爬虫技术人员,甚至爬虫人员也可以转行做数据分析。爬虫最终目的就是提供数据,数据分析基础就是数据,所有数据分析天然成为爬虫进阶方向之一。   Python领域最容易入门的就是爬虫,做爬虫也可以说是非常具有前途的。因为它可以让很多人进入互联网行业,未来更多可能性,当然无论做哪行,能够持续提升自己都是非常重要的。 来源: 51CTO 作者: 老男孩IT 链接:

国内外电商平台反爬虫机制

☆樱花仙子☆ 提交于 2020-04-03 17:57:12
电商平台的核心引擎大致分为两块,搜索架构和产品布局,应该说各有各的特色。当然今天的主题是反爬虫机制,电商平台如何能保护好自己的数据,又不影响正常用户体验,所谓当今业界一场持久的攻防博弈。 一阶爬虫(技术篇) 应用场景一:静态结果页,无频率限制,无黑名单。 攻:直接采用scrapy爬取 防:nginx层写lua脚本,将爬虫IP加入黑名单,屏蔽一段时间(不提示时间) 应用场景二:静态结果页,无频率限制,有黑名单 攻:使用代理(http proxy、VPN),随机user-agent 防:加大频率周期,每小时或每天超过一定次数屏蔽IP一段时间(不提示时间) 应用场景三:静态结果页,有频率限制,有黑名单 攻:使用代理,随机1-3秒爬取,爬10秒休息10秒,甚至范围时间爬取,增加机器 防:当5分钟内请求超过60次,弹出验证码页面,通过验证增加5分钟无限制时间,不通过验证码则屏蔽增加一小时 (时间自拟) 应用场景四(Amazon):静态结果页,有频率限制,有黑名单,有验证码 攻:python+tesseract验证码识别库模拟训练,或基于tor、crawlera(收费)的中间件(广度遍历IP) 防:前端异步加载js,动态加密token 应用场景五(Aliexpress):动态结果页,有频率限制,有黑名单,有验证码 攻:python+Selenium,利用chrome内核加载动态结果页

python3爬虫.2.伪装浏览器

若如初见. 提交于 2020-04-03 17:52:41
有的网页在爬取时候会报错返回 urllib.error.HTTPError: HTTP Error 403: Forbidden 这是网址在检测连接对象,所以需要伪装浏览器,设置User Agent 在浏览器打开网页 ---> F12 ---> Network ---> 刷新 然后选择一项 就是在 header 看到 User-Agent User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 import urllib.request #url包 def openUrl(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Host': 'jandan.net' } req = urllib.request.Request(url, headers=headers) response = urllib.request.urlopen(req) #请求

简单爬虫

大兔子大兔子 提交于 2020-04-03 10:28:34
该随笔主要记录包括urllib、Requests、Selenium、Lxml、Beautifulsoup、pyquery这几个基于爬虫的常用包,主要用于自己的查看和理解,每个包通过2个例子实现对新浪网的新闻和淘宝的图片爬取到本地的测试。 1.urllib(这是python的内置库,是最基础的爬虫实现包) --爬取新浪网: 在新浪网页上打开审查元素,在Network中查看源码,ctrl+f查找一条新闻链接,寻找新闻链接的共性,从而构造正则表达式: 可以看到新闻的前缀是一样的,只有后面不同,因此基于此我们构造如下pat,代码如下: 1 import urllib.request 2 import re 3 data=urllib.request.urlopen("http://news.sina.com.cn/").read().decode("utf8") 4 pat='href="(http://news.sina.com.cn/.*?)"' 5 allurl=re.compile(pat).findall(data) 6 m=0 7 for i in range(0,len(allurl)): 8 thisurl=allurl[i] 9 file="sinanews/"+str(i)+".html" 10 print('***** ' + str(m) + '.html ****

Scrapy爬虫小demo总结

落花浮王杯 提交于 2020-04-03 08:20:42
一、 Scrapy入坑。 a) Scrapy的安装。 这个没什么可讲的,网上一大把。 注意的问题,可能我下载的是32位的python,出现了pywin32没法用的情况,这个直接pip install pypiwin32 就好。 b) 安装验证。 scrapy genspider baidu www.baidu.com 建立一个爬百度的爬虫。 scrapy crawl baidu 成功爬取数据。 c) Scrapy项目创建: 首先进入要创建项目的目录:cd xxx 然后进行创建:scrapy startproject demo1(项目名字是demo1) 进入项目目录,进行抓取目标的设置:cd demo1; scrapy genspider demo1demo quotes.toscrape.com 上面的两步设置好了之后,就有如下结构: 然后我使用的pycharm编译器,,,在命令行。这里 输入命令进行爬取, 注意,,,我在生成的文件中使用了中文注释,然后就报编码错误,所以文件汇总得保证英文环境。 二、 Scrapy基本使用 经过如上的折腾,scrapy总算是可以大概跑起来了,接下来我们来看看怎么使用(emmmm,说实话我也用的不好,说个大概吧,就是记录下这个磨人的小demo)。 好,我们从使用的第一步说起,首先,设置爬取网址: (打码真好看,^_<) 然后就是函数回调,scrapy

大厂在用的Python反爬虫手段,破了它!

只谈情不闲聊 提交于 2020-04-02 20:20:04
SVG 映射反爬虫 SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。 接下来我们要了解的反爬虫手段正是利用 SVG 实现的,这种反爬虫手段用矢量图形代替具体的文字,不会影响用户正常阅读,但爬虫程序却无法像读取文字那样获得 SVG 图形中的内容。由于 SVG 中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的 SVG 图形进行映射和替换,这种反爬虫手段被称为 SVG 映射反爬虫。 6.3.1 SVG 映射反爬虫绕过实战 示例 6:SVG 映射反爬虫示例。 网址: http://www.porters.vip/confusion/food.html 。 任务:爬取美食商家评价网站页面中的商家联系电话、店铺地址和评分数据,页面内容如图 6-15 所示。 图 6-15 示例 6 页面 在编写 Python 代码之前,我们需要确定目标数据的元素定位。在定位过程中,发现一个与以往不同的现象:有些数字在 HTML 代码中并不存在。例如口味的评分数据,其元素定位如图 6-16 所示。 图 6-16 评分数据中口味分数元素定位 根据页面显示内容,HTML 代码中应该是 8.7 才对,但实际上我们看到的却是: 1 < span class = "item

用python 写网络爬虫--零基础

梦想与她 提交于 2020-04-02 18:03:06
在爬取网站之前,要做以下几项工作 1.下载并检查 网站的robots.txt文件 ,让爬虫了解该网站爬取时有哪些限制。 2.检查网站地图 3.估算网站大小 利用百度或者谷歌搜索 Site:example.webscraping.com 结果如下 找到相关结果数约5个 数字为估算值。网站管理员如需了解更准确的索引量 4. 识别网站所使用的技术 使用 python 中的builtwith 模块 下载地址 https://pypi.python.org/pypi/python-builtwith 运行 pip install builtuith 安装完成后 使用命令 I mport builtwith B uiltwith.parse( ‘ http://example.webscraping.com ’ ) 来源: https://www.cnblogs.com/mrruning/p/7624699.html

python的爬虫小入门

荒凉一梦 提交于 2020-04-02 14:58:45
爬虫的相关操作 1、爬文本内容 # coding=gbk import requests ##声明相关库 import re response=requests.get('http://duanziwang.com/') ##获取到需要爬虫的网址 data=response.text ##把网站的相关内容全部爬下来 res=re.findall('<p>(.*?)</p>',data) ##获取自己需要的那一部分 print(res) import requests import re respone=requests.get('http://ishuo.cn/') data=respone.text res=re.findall('<li class="list_li">(.*?)</li>',data) dict={} for i in res: ##对内容进行循环,并取出标题跟内容 context=re.findall('<div class="content">(.*?)</div>',i)[0] title=re.findall('<a href="/subject/.*?">(.*?)</a>',i)[0] desc=re.findall('</a>(04月.*?)</div>',i)[0] dict[title]=(context,desc) for i in

Python之爬虫-段子网

余生颓废 提交于 2020-04-02 14:58:07
Python之爬虫-段子网 https://ishuo.cn #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requests response = requests.get('https://ishuo.cn') data = response.text print(data) r = re.findall('<div class="content">(.*?)</div>',data) for i in r: print(i) http://duanziwang.com/ #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requests response =requests.get('http://duanziwang.com/') data = response.text result = re.findall('<a href="http://duanziwang.com/.*?.html">(.*?)</a>',data) for i in result: print(i) 来源: https://www.cnblogs.com/nickchen121/p/10825887.html