Python 爬虫学习
Python 爬虫学习
南淮北安
好好学习
展开
-
Python爬虫学习
目录1. 爬虫-学习2. 爬虫-扩展1. 爬虫-学习网页基础文件存储文件命名正则表达式-常用规则正则表达式-贪婪模式和非贪婪模式正则表达式-替换模式sub正则表达式-模块compile和matchDOM操作器XPATH小实例HTTP基本原理Chrome辅助工具-Inspector -ElementsChrome辅助工具-Inspector -ConsoleChrome...原创 2019-04-07 21:16:37 · 1206 阅读 · 0 评论 -
str.content 和 str.text的区别
对requests获取的原始数据,有两种获取形式,一个是test.content,一个是test.text二者的区别在于content返回的是byte型数据,而text返回的是Unicode数据,也就是说text对原始数据进行的特殊的编码,而这个编码方式是基于对原始数据的猜测(响应头)text返回的是unicode 型的数据,一般是在网页的header中定义的编码形式。content返回的...原创 2019-04-04 23:02:54 · 1628 阅读 · 0 评论 -
Python爬虫实战:使用代理(urllib模块)
文章目录1. 前言2. 使用代理3. 示例1. 前言第二个方案是使用代理,代理就是“嘿,哥哥,弟弟我访问这个网址有点困难,帮忙解决一下呗”。然后将 需要访问的网址告诉代理,代理替你访问,然后把看到的内容都转发给你,这就是代理的工作。因此服务器看到的是代理的IP地址,而不是你的IP地址2. 使用代理使用代理的步骤:(1)proxy_support = urllib.request.Pro...原创 2019-04-07 14:00:14 · 3087 阅读 · 2 评论 -
Python实战:延迟提交数据
文章目录1. 前言2. 延迟提交时间1. 前言上一篇文章中我们可以通过修改User-Agent实现隐藏,可以算是最简单的方法了。不过如果这是一个用于抓取网页的爬虫(比如批量下载某些照片。。。),那么一个IP地址在短时间内连续进行网页访问,很明显是不符合普通人类的行为标准的,同时也会对服务器造成不小的压力。因此服务器只需要记录每个IP的访问频率,在单位时间之内,如果访问频率超过一个阈值,便认为该...原创 2019-04-06 22:48:49 · 1044 阅读 · 0 评论 -
Python爬虫实战:修改User-Agent
文章目录1. 前言2. 修改User-Agent1. 前言有些网站不喜欢被程序访问,因此他们会检查链接的来源。如果访问来源不是正常的途径,就给你“掐掉”。所以为了让我们的爬虫更好的为我们服务,需要对代码进行一些改进–隐藏-,让它看起来更像是普通人通过普通浏览器的正常点击2. 修改User-Agent通过查阅帮助文档,可知Request有个headers参数,通过设置这个参数,可以伪造成浏览...原创 2019-04-06 18:32:02 · 6969 阅读 · 0 评论 -
Python爬虫实战:翻译文本
目录1. 前期准备2. 如何使用Python提交POST表单1. 前期准备这个例子需要利用有道词典来翻译文本确定目标网址:http://fanyi.youdao.com审查元素,确定请求URLRequest URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule接下来需要关注几个重要点:...原创 2019-04-06 16:47:13 · 996 阅读 · 0 评论 -
Python爬虫实战:下载一只猫
1. 准备这个例子是“下载一只猫”目标网站:http://placekitten.com/在网址后边加上宽度和高度就可以得到一张对应的猫的照片例如本次目标网址:http://placekitten.com/g/200/3002. 代码1import urllib.request# urlopen实际上返回的是一个类文件对象,因此可以用read()方法获取内容response = u...原创 2019-04-05 11:41:48 · 933 阅读 · 0 评论 -
Python爬虫学习:入门
目录1. 什么是爬虫2. Python如何访问互联网1. 什么是爬虫网络爬虫:WebSpider,把互联网想象成一个类似于蜘蛛网一样的构造,那么爬虫在上面爬来爬去获取我们所需资源我们之所以能够通过百度或谷歌这样的搜索引擎检索到你的网页,靠的就是他们大量爬虫每天在互联网上爬来爬去,对网页中的每个关键词进行索引,建立索引数据库。在经过复杂的算法排序后,这些结果将按照与搜索关键词的相关度高低,依次...原创 2019-04-04 23:23:16 · 633 阅读 · 0 评论 -
Python爬虫学习:MySQLCursor
1. Python使用MySQLCursor执行SQL操作execute():执行一条SQL语句fetchall():获取所有的结果fetchone():获取一个结果rowcount:获取结果的数量close():结束当前的查询2. 示例直接创建一个连接import mysql.connectorfrom mysql.connector import poolingcn...原创 2019-02-14 15:26:28 · 634 阅读 · 1 评论 -
Python爬虫学习:MySQLConnection
close():对于从POOL获取的connection,调用close()来释放对它的占用,并不真的关闭这个与 MySQL Server 的连接• start_transaction:开始一次事务(Transaction)• commit():提交一个事务,默认 autocommit 是关闭的,所以需要手动提交• cursor():返回 MySQLCursor 对象,如果 buffere...原创 2019-02-14 13:48:26 · 806 阅读 · 0 评论 -
Python爬虫学习:案例-单一版面列表抓取(2)
1.借助Postman生成Headers如果Headers中如果 含有if-modified-since也需要拿掉。2.分析网页3.代码import requestsimport refrom lxml import etreeclass BoardListCrawler: headers = { 'Accept': "*/*", 'Ac...原创 2019-01-23 17:03:13 · 451 阅读 · 0 评论 -
Python爬虫学习:案例-为BBS网站创建表前奏(有点问题)(9)
mysql_manager.py代码import mysqlfrom mysql.connector import errorcodeclass MysqlManager(): #配置语句 dbconfig = { "database":"smth", "user":"root", "password&am原创 2019-02-14 22:17:29 · 304 阅读 · 0 评论 -
使用Postman发送请求Preview不能正常显示中文
1. 乱码2. 解决办法原因:直接访问url,请求的得到网页内容中有 跨域请求编码服务器后台没有处理好。解决办法在postman中Headers里加上X-Requested-With: XMLHttpRequest再次发送请求,就不显示乱码了。加上这个参数后,请求到的内容中碰巧把GBK编码限制去掉,结果正常显示...原创 2019-01-23 01:15:57 · 3708 阅读 · 0 评论 -
Python爬虫实战:使用代理(requests模块)
对于requests来说,代理设置加简单,我们只需要传入proxies参数即可import requestsurl = 'http://ip.tool.chinaz.com/'headers = { 'Host': "ip.tool.chinaz.com", 'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) A...原创 2019-04-07 21:15:33 · 3502 阅读 · 2 评论 -
Python爬虫学习:使用urllib(request)
1. 前言在Python2中,有urllib和urllib2两个库来实现请求的发送。而在python3中,已经不存在urllib2这个库了,统一为urllib。urllib是Python内置的HTTP请求库,也就是说不需要额外安装即可使用,它一共包含四个模块:request:它是最基本的HTTP请求模块,可以用来模拟发送请求。就像在浏览器输入网址,然后回车一样,只需要给库方法传入URL以及额...原创 2019-04-09 21:09:41 · 678 阅读 · 0 评论 -
Python爬虫学习:使用urllib(error)
文章目录1. URLError2. HTTPError1. URLErrorfrom urllib import request,errorurl = 'http://ww.ba2idu.com'try: response = request.urlopen(url)except error.URLError as e: print(e.reason)URLError...原创 2019-04-09 21:47:16 · 714 阅读 · 0 评论 -
编码(decode与encode)
目录1. 什么是编码2. 编码方式属性3. decode与encode1. 什么是编码事实上计算机只认0或1,然而却可以通过计算机来显示文本,这就是靠编码来实现的。编码其实就是约定的一个协议,比如ASII编码约定了大写字母A对应十进制65,那么在读取一个字符串的时候,看到65,计算机就知道这是大写字母A的意思由于计算机是美国发明的,所以这个ASCII编码设计时只采用1个字节存储,包含了大小...原创 2019-04-04 22:42:23 · 14670 阅读 · 2 评论 -
爬取豆瓣电影 Top250 电影并存储到 Excel 表中
文章目录一、前期准备二、代码一、前期准备观察网页 url 或者通过最下面的分页审查元素:发现规律,0-25-50。。。递增,以此确定爬取 page 页码确定爬取的内容名称、图片、排名、评分、作者、简介二、代码请求网页代码:# 请求豆瓣电影def request_douban(url): try: response = requests.get(...原创 2019-08-21 19:42:18 · 3879 阅读 · 0 评论 -
Python爬虫:BeautifulSoup 中 string 和 text 的区别
初识 string 和 text 时感觉没什么区别,都是获得标签内的文本啊然而在这次爬虫过程中发现并不是,他俩的区别还是挺大的from bs4 import BeautifulSoup# 实际网站的一段代码html = """<div class="bd"><p class=""> 导演: 弗兰克·德拉邦特 Frank Darabont ...原创 2019-08-21 14:26:13 · 7441 阅读 · 5 评论 -
Python 爬虫:selenium 详解
文章目录一、什么是 Selenium二、支持的主流浏览器一、什么是 Seleniumselenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可...原创 2019-08-24 15:36:34 · 2635 阅读 · 0 评论 -
爬虫:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position
由于爬取的网页编码格式是“gb2312”格式的,所以第一反应就是也用这个格式编码和解码import refrom lxml import etreeimport htmlwith open('test.html','r',encoding='gbk') as f: c = f.read()s = re.sub(r'\n',' ',c)tree = etree.HTML(c)...原创 2019-08-19 10:04:18 · 10327 阅读 · 1 评论 -
爬取当当网 Top 500 本五星好评书籍
文章目录一、分析页面确定需要获取的信息二、实现爬取代码一、分析页面确定需要获取的信息页面通过控制 URL 的最后一个参数,实现分页确定我们想要获取的信息:排名、书名、图片地址、作者、推荐指数、五星评分次数、价格通过审查元素,确定怎么得到这些信息(正则)3.确定思路使用 page 变量实现分页,使用request 请求当当网,对返回的 HTML 进行正则解析,解析之后的内容存到文...原创 2019-08-18 21:51:26 · 1312 阅读 · 0 评论 -
json.dumps 中的 ensure_ascii 参数
输出的会是 ‘喜欢’ 的 ascii 字符码,而不是真正的中文。这是因为 json.dumps 序列化时对中文默认使用的 ascii 编码.想输出真正的中文需要指定 ensure_ascii=False...原创 2019-08-18 21:47:13 · 1962 阅读 · 0 评论 -
爬虫之 json 数据处理
文章目录一、什么是 json二、json 有四个方法供我们进行数据转换:三、json 的作用四、引入 json 包的目的一、什么是 jsonJSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。JSON与XML格式算是如今互联网...原创 2019-08-18 17:04:00 · 3182 阅读 · 0 评论 -
Python爬虫学习:Beautiful Soup (3)
在知道了BeautifulSoup的基本用法之后,这篇文章来真正运用下它文章目录1. 实例一:爬取网页中的超链接1. 实例一:爬取网页中的超链接审查元素发现:每一个超链接都含有 nanhuaibeian/article/details 字段import requestsfrom bs4 import BeautifulSoupimport redef main(): u...原创 2019-04-23 22:12:55 · 500 阅读 · 0 评论 -
Python爬虫学习:Beautiful Soup (2)
文章目录1. 节点选择器2. 方法选择器1. 节点选择器from bs4 import BeautifulSouphtml = """<html><head><title>The test!</title></head><body><ol><li><a href="https://...原创 2019-04-21 22:25:30 · 454 阅读 · 0 评论 -
Python爬虫学习:Beautiful Soup (1)
“美味的鸡汤”,是一个可以从HTML或XML文件中提取 数据的Python库。它能够通过你喜欢的转换器实现常规的文档导航,查找,修改文档的操作。Beautiful Soup会帮你节省数小时甚至数天的工作时间。文章目录1. 安装Beautiful Soup2. 解析器3. 基本用法1. 安装Beautiful Soup点击查看2. 解析器解析器使用方法优势劣势Pyt...原创 2019-04-21 19:41:11 · 639 阅读 · 0 评论 -
Python爬虫学习:使用requests
文章目录1. 前言2. 使用requests1. 前言为了更加方便的实现抓取操作,出现了requests,开始讲述之前,要先确保安装好了requests库2. 使用requests原创 2019-04-16 23:03:08 · 411 阅读 · 0 评论 -
Python爬虫学习: 案例-BBS网站介绍(1)
1. 确定网站有哪些版块观察页面点击几个页面发现 http://www.newsmth.net/nForum/#!section/X2. 使用Postman验证如果我们爬取http://www.newsmth.net/nForum/#!section/6这个版面,使用Postman验证模版的意思是有框架,但是框架里是空的值,根据具体情况会往里面填充值,所以这就造成如果直接爬取这个URL会...原创 2019-01-23 01:08:27 · 782 阅读 · 0 评论 -
Python爬虫学习:定制抓取
1. 按版块实施抓取2. 按内容实施抓取具体就是根据我们的具体需求,比如需要视频、文章,那就限制只抓取视频或文章3.按网站特定结构实施抓取比如百度百科是一个特别扁平的结构,里面的内容细分的不是很明显,没有归类特别明显,则没办法按照内容或者版块实施抓取4. 利用搜索进行抓取比如我们想获取达芬奇的画作,可以直接通过代码调用浏览器爬取...原创 2019-01-22 19:37:20 · 546 阅读 · 0 评论 -
Chrome辅助工具-Inspector -Network
Network面板可以记录页面上的网络请求的详情信息,从发起网页页面请求Request后分析HTTP请求后得到的各个请求资源信息(包括状态、资源类型、大小、所用时间、Request和Response等)。XHR:记录ajax中的请求AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML) AJAX 不是新的编程语言,而是...原创 2019-01-20 22:23:29 · 1203 阅读 · 0 评论 -
Python爬虫学习:案例-主题列表内容抓取(6)
审查元素分析功能代码 #获取标题和URL的方法 def extract_tag_a(self,columns,index): title = columns[index].xpath('a')[0].text url = columns[index].xpath('a')[0].attrib['href'] retu...原创 2019-01-25 14:53:54 · 511 阅读 · 0 评论 -
Chrome辅助工具-Inspector -Console
Console实际是浏览器的一个控制台,可以直接执行HTML和JavaScript等的一些指令简单应用定位登录窗口的位置观察到Elements中显示有两个输入窗口在Console中验证是否只有两个输入窗口验证得知确实只有两个输入框可以在Console中进一步验证得出的输入位置是否可用...原创 2019-01-20 17:54:36 · 2576 阅读 · 1 评论 -
Python爬虫学习:案例-主题列表分页抓取(5)
需要获取最大页数分析最后一个li标签最后一个li标签写求取最大页码的代码 def get_max_page(self,html): tree = etree.HTML(html) pages = tree.xpath('//ol[@class=&amp;quot;page-main&amp;quot;][1]/li') #只有一页的情况 i...原创 2019-01-25 11:28:20 · 580 阅读 · 0 评论 -
Chrome辅助工具-Inspector -Elements
Elements主要是帮助我们定位网页中的内容如图copy选项XPath详细信息Copy Xpath:可以直接拿到我们想要抽取的信息的XPath 例如://*[@id=&quot;maincontent&quot;]Copy element:可以直接拿出一整段的代码块Expand all选项:将标签下的页面全部展开Scroll into view选项当我们不知道某个区域对应的页面时,这...原创 2019-01-20 11:13:19 · 944 阅读 · 0 评论 -
Python爬虫学习:案例-主题列表分析(4)
观察页面为了获得主题和回帖,因此需要关注主题列表以及页码2.3. 根据Preview回显,寻找真正的请求链接将真正的Request URL与版面列表抓取的主题列表结果比对发现请求构成http://www.newsmth.net/nForum/board/[BoardName]?ajax&amp;amp;p=[page]Boardname为版面列表中获取的URLpage 为...原创 2019-01-24 23:57:30 · 928 阅读 · 0 评论 -
HTTP基本原理
标题原创 2019-01-19 21:20:32 · 706 阅读 · 0 评论 -
Python爬虫学习:网页基础
1.网页的组成网页可以分为三大部分,HTML、CSS和JavaScript。将网页当成一个人的话,HTML为人的骨架,CSS为人的皮肤,JavaScript为人的肌肉,三者结合起来才能形成一个完善的网页。HTML超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。不同类型的元素通过不同的标签来表示,如视频用video标签表示...原创 2019-01-08 14:32:07 · 824 阅读 · 1 评论 -
Python爬虫学习:案例-所有版面列表抓取(3)
1. 观察页面存在二级目录由此编写判断条件#判断是否为二级目录if len(columns[1].xpath('a')) == 0: url = self.domain + board['url'] r = requests.get(url, headers=self.headers) children_boards = self.get_board_list(r...原创 2019-01-24 00:10:42 · 420 阅读 · 0 评论 -
Python爬虫学习:正则表达式-常用规则
1. 定义正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。在爬虫的解析中,经常会将正则表达式与Dom 选择器结合使用。正则表达式适用于字符串特征比较明显的情况,但是同样的正则表达可能在HTML源码里多次出现;而Dom 选择器可以通过class 及id 来精确找到DOM 块,从...原创 2019-01-06 20:55:35 · 647 阅读 · 0 评论