:D ...

012.Python爬虫基础总结

如果你时一步步从第一节看到这里的,相信会对Python爬虫有了基础的了解。到此,基础的理论已经都了解到了,需要的时自己动手实战练习。 学到的知识如果没有实际使用,很快就会被忘记。 在实践过程中的建议 Python环境:建议使用Anaconda3搭建Python环境,然后使用 jupyter-notebook 通过浏览器页面编写、运行代码,这样可可以实时查看运行结果情况,方便调试。 选择一些不需要登录的网站练习(降低练习难度) 学会利用浏览器的F12开发者模式,通过开发者模式可以了解网站中的网络交互过程以及爬取数据的方法。 参考示例 comics_spider: 一个漫画爬虫示例(内部示例仅供参考,方法可能已经失效)。 spider_keyword: 关键词爬虫, 收集各种关键词信息(weibo/baidu)

2024-08-12 周一 12:52:22 ·  阅读 1 分钟 ·  共 14 字 · 根叔

011.Web页面数据解析处理方法

Web页面数据解析处理方法 urllib3和requests库都是围绕支持HTTP协议实现客户端功能。但是在对页面解析处理上他们可能并不能提供更多的帮助,我们需要借助专门的Web页面数据解析库来解析并提取出结构化结果数据。 Web页面的解析方法通常可以用下面三种方法: 正则表达式 : 将页面当做文本处理,简单直接,大面积撒网。 XPath : XPath路径表达式可以让我们像访问目录一样访问Web页面的所有节点元素, 精准匹配。 CSS Selector : CSS 选择器Selector 与XPath相似,以CSS样式的表达式来定位节点元素, 精准匹配。 正则表达式 Python中的正则表达式库re 是我们最为常用的正则库,一条正则表达式可以帮我们过滤掉无用数据,只提取我们需要的格式数据。 在处理网页时,我们并不会频繁的全页面匹配,可想而知这样的效率极低,通常我们需要缩小数据匹配的范围节点,在小范围内进行正则匹配。而缩小范围的方法常常会结合XPath或者Selector一起完成,所以要学会三种方法的配合使用。 有时候,可能一条正则表达式就可以提取出所有我们需要的结果,例如下面这个提取IP:端口的正则表达式: Python 1 2 3 4 5 6 7 8 9 10 11 import requests import re url = 'https://free-proxy-list.net/anonymous-proxy.html' r = requests.get(url, timeout=10) pr_re = r'<td.*?>.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*?</td>.*?<td.*?>.*?(\d+).*?</td>' proxies = re.findall( pr_re, r.text) proxy_list=[] for proxy in proxies: proxy_list.append(':'.join(proxy[0:2])) print('\n'.join(proxy_list)) XPath XPath路径表达式可以让我们像访问目录一样访问Web页面的所有节点元素, 精准匹配。 想了解XPath的详细信息,可以阅读XPath快速了解,接下来我们说明下如何在Python中使用XPath 支持XPath的库有lxml、parsel ,其实还有很多,只不过这两个是API接口非常好用的库。 lxml是基于C语言开发库libxml2和libxslt实现的,因此速度上是非常快的(远高于Python自带的ElementTree,所以ElementTree很少被使用)。并且使用cssselect库扩展支持了CSS选择器接口。 parsel则是在lxml基础上的更高级别封装,并且提供了XPath、CSSSelector和re正则表达式三种提取方式的支持,封装的接口也是更加简单易用。同时,parsel也是scrapy所使用的选择器。 lxmlXPath解析示例 XPath表达式有时候我们不知道如何写时,我们可以通过功浏览器的开发者工具帮助获取XPath,具体方法为:...

2024-08-12 周一 12:51:22 ·  阅读 3 分钟 ·  共 615 字 · 根叔

009.正则表达式的基础使用

re正则表达式的基础使用 正则表达式的好处就是可以通过简短表达式精准表达需要匹配内容,然后在文本数据中快速匹配提取到需要的文本内容。 正则表达式可以很简短,也可以很复杂,可能对于同一个结果,不同人写出来的表达式也是千差万别。 为了能够写出优雅的正则表达式,我们首先了解一下它的语法信息,在不断练习实践,才能达到了熟练使用正则表达式的效果。 正则表达式语法 为了方便理解记忆,下面将正则表达式进行了归类整理。 元字符含义 元字符 含义 . (点) 在默认模式,匹配除了换行的任意字符。如果指定了标签 DOTALL ,它将匹配包括换行符的任意字符。 \ 转义特殊字符(允许你匹配 ‘’, ‘?’, 或者此类其他),或者表示一个特殊序列; 为了防止反斜杠灾难,推荐无论多简单的表达式都要使用 r(raw) 原生字符串来表达,例如: r"\w." [] 用于表示一个字符集合。比如 [amk] 匹配 ‘a’, ’m’, 或者 ‘k’。 可以表示字符范围,通过用 ‘-’ 将两个字符连起来。 比如 [a-z] 将匹配任何小写ASCII字符. 特殊字符在集合中,失去它的特殊含义。比如 [(+)] 只会匹配这几个文法字符 ‘(’, ‘+’, ‘’, or ‘)’。 字符类如 \w 或者 \S (如下定义) 在集合内可以接受,它们可以匹配的字符由 ASCII 或者 LOCALE 模式决定。 ‘^‘字符放在开始位置表示取反操作,例如 [^5] 将匹配所有字符,除了 ‘5’,但是 [5^] 将匹配 ‘5’ 或 ‘^’。 在集合内要匹配一个字符 ‘]’,有两种方法,要么就在它之前加上反斜杠,要么就把它放到集合首位。比如, [()[]{}] 和 [{}] 都可以匹配括号。 | A|B, A 和 B 可以是任意正则表达式,创建一个正则表达式,匹配 A 或者 B....

2024-08-07 周三 13:51:22 ·  阅读 4 分钟 ·  共 766 字 · 根叔

010.python爬虫第一个网络库:requests库

Requests库的基本使用 Requests库是在urllib3库的基础上更层次的抽象封装,使用起来更加简单,代码量也会更少。 快速安装 pip install requests快速编写示例 最好的学习就是从实践中锻炼学习,立刻动起小手!从这些简单示例开始练习。 访问HTTP协议页面 Python 1 2 3 4 5 6 7 8 9 #!/usr/bin/env python3 import requests url = 'https://www.baidu.com' resp = requests.get(url) print(resp.status_code) if resp.status_code == 200: print(resp.text) GET-参数查询信息 下面是两个GET方法参数查询示例,其中第二个示例的seen_list是一个列表,这对于参数名相同并且包含多个值的设置是非常方便的。 Python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import requests as req payload1 = { 'name': 'Peter', 'age': 23 } payload2 = { 'name': 'Peter', 'seen_list': [1,2,3,4,5,6] } url = 'https://httpbin....

2024-08-07 周三 13:51:22 ·  阅读 3 分钟 ·  共 566 字 · 根叔

008.XPath选择器参考

XPath选择器参考 XPath是用于浏览XML文档元素和属性的语言,通过XPath路径表达式遍历节点元素就如同在磁盘上访问文件夹路径一样的方便精准表达元素和属性。 XPath内置了200多个函数帮助我们处理文本、数字、布尔值、日期和时间等类型数据,它的语法规则已经广泛用于很多语言中。 XPath术语 节点(Node) : 元素、属性、文本、命名空间、处理指令、注释和文档(根)节点。XML文档被当做节点树对待,树的根被称作文档节点或者根节点。 基本值(原子值, Atomic value): 无父或无子的节点。 项目(Items):基本值或者节点都可以称为一个item项目。 节点关系: 父(Parent)、子(Children)、同胞(Sibling)、先辈(Ancestor)、后代(Descendant) 以articlie节点为例,父节点为div,子节点为ul ,孙子节点为 li 。 再以li/div节点为例, 节点包含节点有 @class属性节点, @id属性节点和text文本无子节点就称为原子值。 XPath路径表达式语法 我们以下面例子了解语法及含义: XML 1 2 3 4 5 6 7 8 9 10 11 <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book> </bookstore> 选取节点 下面列出了最常用的路径表达式: 术语 含义 示例 node_name 选取node_name节点的所有子节点。 bookstore / 从根节点选取。 /html/body/table // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 //div[@class=“article”] . 选取当前节点。 ./a/@href ....

2024-08-07 周三 12:51:22 ·  阅读 3 分钟 ·  共 587 字 · 根叔

007.CSS选择器参考

CSS选择器参考 在 CSS 中,选择器是一种选择HTML元素的模式,用于选择需要添加样式的元素,比如通过表达式选中哪些div标签等,为元素标签添加样式。 而在编写爬虫时,可以通过CSS选择表达式定位到要获取信息的HTML标签或属性等等,可以非常方便的帮助我们提取需要的信息。 选择器分类参考表 选择器 示例 学习CSS的教程 类型选择器 h1 类型选择器 通配选择器 * 通配选择器 类选择器 .box 类选择器 ID选择器 #unique ID选择器 标签属性选择器 a[title] 标签属性选择器 后代选择器 article p 后代选择器(空格) 子代选择器 article > p 子代选择器(大于号) 相邻兄弟选择器 h1 + p 相邻兄弟 通用兄弟选择器 h1 ~ p 通用兄弟 伪类选择器 p:first-child 伪类 伪元素选择器 p::first-line 伪元素 选择器详细参考表 “CSS” 列指示该属性是在哪个 CSS 版本中定义的。(CSS1、CSS2 还是 CSS3。) 选择器 例子 例子描述 CSS .class .intro 选择 class=“intro” 的所有元素。 1 #id #firstname 选择 id=“firstname” 的所有元素。 1 * * 选择所有元素。 2 element p 选择所有 <p> 元素。 1 element1,element2 div,p 选择所有 <div> 元素和所有 <p> 元素。 1 element1 element2 div p 选择 <div> 元素内部的所有 <p> 元素。 1 element1>element2 div>p 选择父元素为 <div> 元素的所有 <p> 元素。 2 element1+element2 div+p 选择紧接在 <div> 元素之后的所有 <p> 元素。 2 element1~element2 p~ul 选择前面有 <p> 元素的每个 <ul> 元素。 3 [attribute] [target] 选择带有 target 属性所有元素。 2 [attribute=value] [target=_blank] 选择 target="_blank" 的所有元素。 2 [attribute~=value] [title~=flower] 选择 title 属性包含单词 “flower” 的所有元素。 2 [attribute|=value] [lang|=en] 选择 lang 属性值以 “en” 开头的所有元素。 2 [attribute^=value] a[src^=“https”] 选择其 src 属性值以 “https” 开头的每个 <a> 元素。 3 [attribute$=value] a[src$="....

2024-08-06 周二 12:51:22 ·  阅读 2 分钟 ·  共 410 字 · 根叔

000.Python环境之Anaconda3安装及问题解决方法

首先, 选择 Anaconda3 还是 Miniconda 主要取决于您的具体需求和使用场景。 Anaconda3 vs Miniconda 对比 Anaconda3 Miniconda 安装包大小 大(~500MB) 小(~30MB) 包含包数量 1500+ 基本包(Conda, Python) 安装复杂度 简单,开箱即用 需要手动安装包 包管理工具 包含 Anaconda Navigator(图形界面) 仅包含 Conda(命令行) 性能优化 包含优化包(如 Intel MKL) 不包含优化包 灵活性 包含预装包,较固定 灵活,用户自主选择包 适合用户 初学者,数据科学全能用户 有经验的用户,资源有限的系统 推荐理由 选择 Anaconda3: 初学者希望快速搭建数据科学环境。 需要包含大量预装包的开箱即用环境。 不介意较大的安装包和磁盘空间占用。 选择 Miniconda: 有经验的用户,希望完全掌控包和环境。 系统存储空间有限,安装时间紧迫。 只需要一些特定的包,不希望安装冗余的包。 Anaconda3的安装 1.下载安装包 根据系统类型选择适合的安装包下载,国内用户可以使用清华大学镜像站点下载(速度比官网快很多) 清华大学镜像站点 访问清华大学镜像点这里。 下面是Anaconda3-2024.02-1版本安装包链接: 下载方式 Windows下载地址 MacOS下载地址 Linux下载地址(x86_64): Linux下载地址(aarch64) Linux下载地址(arm64) Linux下载地址(ppc64le) Anaconda官方站点 下载地址: https://www.anaconda.com/download#downloads Archive地址: https://repo.anaconda.com/archive/ 安装Anaconda Windows/MacOS三个系统的安装过程都是图形化界面,一步步操作就可以完成安装。...

2024-05-31 周五 12:51:22 ·  阅读 3 分钟 ·  共 472 字 · 根叔

000.爬虫相关的法律问题(写在入门前)

写爬虫,首先要关注一下相关的法律问题,不能作出非法操作或者对目标服务器的服务造成影响等情况,否则等待你的会是法律的惩罚。 下面内容来自Github上的虫师法律问题汇总中国爬虫违法违规案例汇总 目的是帮助更多虫师了解法律安全知识。 违法违规案例汇总 爬虫禁区1:为违法违规组织提供爬虫相关服务(验证码识别服务贩卖、SEO……) CASE1:知乎某极验破解者自述被抓(已删除) CASE2:“快啊答题”AI破解验证码服务开发者被判刑 CASE9:永嘉警方揪出“黑”百度黑客团伙 干扰搜索引擎牟利超七千万元 爬虫禁区2:个人隐私数据抓取与贩卖 CASE3:简历大数据公司“巧达科技”被一锅端 CASE4:社保掌上通被下架 用户的信息很容易泄露太不安全了 CASE5:爬虫为何受关注?业内:大数据服务商或因合作方涉套路贷犯罪而被牵连 CASE10:中数智汇员工私下贩卖工商数据被判刑 CASE12:抓取脉脉数据并出售个人信息获利11584元被判刑 CASE15:非法存储公民账号密码2000万余条!魔蝎数据爬虫案判了 爬虫禁区3:利用无版权的商业数据获利 CASE6:“车来了”涉嫌偷数据被警方立案 CASE8:裁判文书网数据竟被售卖:爬虫程序抓取 或成侵权 CASE11:非法提供杭州某网购平台数据爬取接口获利2.2万元,文某某被提起公诉 CASE13:某直播数据网站(提供淘宝直播数据)某球数据CEO王某漪被抓(由于暂时没有判决,仅做新闻链接,判决文书公开后更新) CASE16:非法抓取“起点”小说供人免费阅读获利千万被判刑 爬虫禁区4:目标网站因爬虫宕机造成严重后果 CASE14:每秒183次请求致超算崩溃,某互联网公司爬取居住证网站:CTO、程序员双双被判刑 爬虫禁区5:? CASE7:头疼大战前传:头条前高管反噬被判刑 相关法律法规介绍 破坏(非法侵入)计算机信息系统罪 根据《中华人民共和国刑法》第二百八十六条规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚(编者注:请参考CASE14,开发者的直属领导处罚比开发者重)。 非法获取计算机系统数据罪 根据《中华人民共和国刑法》第二百八十五条规定,非法获取计算机信息系统数据、非法控制计算机信息系统罪,是指违反国家规定,侵入国家事务、国防建设、尖端科学技术领域以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,情节严重的行为。刑法第285条第2款明确规定,犯本罪的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。 侵犯公民个人信息罪 《刑法》修正案(九)中将刑法第二百五十三条进行了修订,明确规定违反国家有关规定,向他人出售或者提供公民个人信息,情节严重的,构成犯罪;在未经用户许可的情况下,非法获取用户的个人信息,情节严重的也将构成“侵犯公民个人信息罪”。 根据《最高人民法院 最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》第五条规定,对“情节严重”的解释,(1)非法获取、出售或者提供行踪轨迹信息、通信内容、征信信息、财产信息五十条以上的;(2)非法获取、出售或者提供住宿信息、通信记录、健康生理信息、交易信息等其他可能影响人身、财产安全的公民个人信息五百条以上的;(3)非法获取、出售或者提供第三项、第四项规定以外的公民个人信息五千条以上的便构成“侵犯公民个人信息罪”所要求的“情节严重”。 侵犯商业秘密罪 《反不正当竞争法》第九条,以不正当手段获取他人商业秘密的行为即已经构成侵犯商业秘密。而后续如果进一步利用,或者公开该等信息,则构成对他人商业秘密的披露和使用,同样构成对权利人的商业秘密的侵犯。 网络安全法 《网络安全法》第四十四条 任何个人和组织不得窃取或者以其他非法方式获取个人信息。因此,如果爬虫在未经用户同意的情况下大量抓取用户的个人信息,则有可能构成非法收集个人信息的违法行为。 民法总则 《民法总则》第111条任何组织和个人需要获取他人个人信息的,应当依法取得并确保信息安全。不得非法收集、使用、加工、传输他人个人信息 相关法律条文 中华人民共和国刑法 中华人民共和国反不正当竞争法 中华人民共和国网络安全法 中华人民共和国民法典 最高人民法院 最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释 专业律师发表的相关观点 周 浩:利用网络爬虫获取数据的刑事责任分析 金 杜:数据之争:网络爬虫涉及的法律问题 丁学明: 网络爬虫?你可能面临的法律责任

2024-05-31 周五 12:51:22 ·  阅读 1 分钟 ·  共 58 字 · 根叔