python爬虫零基础实战

python爬虫零基础实战,第1张

概述介绍了python爬虫基础知识,简单可行易上手 content1.什么是爬虫?2.为什么用python做网页爬虫3.python环境配置4.我需要了解哪些python爬虫的前置知识5.关于正则表达式6.提取网页内容并用正则表达式处理7.xPath和BeautifulSoup工具简介

 

 

1.爬虫简介

简单来讲,爬虫就是一个探测机器,它的基本 *** 作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。

你可以简单地想象:每个爬虫都是你的“分身”。就像孙悟空拔了一撮汗毛,吹出一堆猴子一样。

你每天使用的百度,其实就是利用了这种爬虫技术:每天放出无数爬虫到各个网站,把他们的信息抓回来,然后化好淡妆排着小队等你来检索。
抢票软件,就相当于撒出去无数个分身,每一个分身都帮助你不断刷新 12306 网站的火车余票。一旦发现有票,就马上拍下来,然后对你喊:土豪快来付款。--摘自知乎用户 史中
  互联网就像一张网,中间以各种链接连接在一起,而小小的爬虫却能在这张网上欢快的驰骋,代替人来进行很多繁重的任务,如抢票软件、某度搜索引擎。   2.为什么用python做网页爬虫  python作为一门易上手的语言,提供了丰富的API来抓取网页文档、模拟浏览器行为、对抓取到的数据进行处理。后面我们的演示中也会展示Python爬虫的简介,爬取网页内容的核心代码可能只有短短几行,却能实现强大的功能。  3.python环境配置  对于新手来说,最熟悉的还是windows环境。我使用的是anaconda+pycharm进行python代码的编写,这里anaconda方便进行外部库的管理,而pycharm也是功能强大很流行的一款IDE。详细的配置过程参见博客:     anaconda和pycharm的安装与配置 。 4.我需要了解哪些Python爬虫的前置知识  至少会一点python的基础知识,如果不清楚的话,可以参加浙大翁恺的python,或者自己找些介绍文档,如       python入门教程。同时需要了解关于HTML的一些基础知识,比如各种标签代表的含义:

<!–…–>:定义注释
<!DOCTYPE> :定义文档类型
<HTML>:HTML文档的总标签
<head>:定义头部
<body>:定义网页内容
<script>:定义脚本
<div>:division,定义分区,容器标签
<p>:paragraph,定义段落
<a>:定义超链接
<span>:定义文本容器
<br>:换行
<form>:定义表单
<table>:定义表格
<th>:定义表头
<tr>:表的行
<td>:表的列
<b>:定义粗体字
<img>:定义图片

  熟悉上面这些HTML标签将会方便我们进行正则表达式的处理,以及xPath和BeautifulSoup的学习。 5. 关于正则表达式   python正则表达式相关知识较多,我们只需要了解一些基础的即可,如:    python正则表达式 菜鸟教程    python正则表达式官方文档 6.提取网页内容并用正则表达式处理   
import re urllib.request chardetresponse=urllib.request.urlopen("http://news.hit.edu.cn/")#输入参数为你想爬取的网页URLHTML=response.read() #读取到HTML变量中chardet1=chardet.detect(HTML) #获取编码方式HTML=HTML.decode(chardet1['enCoding']) #按照获取到的编码方式进行处理

   这里我们以某高校的官方新闻网站为例演示来进行Python爬虫 *** 作,上面短短的几行代码就实现了将网页内容爬取到本地的 *** 作。

  接着就是对爬取到的内容进行正则表达式处理,得到我们想要获取的内容,观察网页源代码:

  

我们希望对其中的外部链接进行匹配,由之前了解到的正则表达式知识,实现如下:

mypatten=<li class=\"link-item\"><a href=\"(.*)\"><span>(.*)</span></a></li>myList=re.findall(mypatten,HTML)for i in myList:    print(外部链接地址:%s 网站名:%s" %(i[0],i[1]))

最后得到的效果是:

 

7.xPath和BeautifulSoup工具简介

  除了用正则表达式处理得到的网页文档之外,我们还可以考虑网页自身的架构。

XPath,全称 XML Path Language,即 XML 路径语言,它是一门在XML文档中查找信息的语言。XPath 最初设计是用来搜寻XML文档的,但是它同样适用于 HTML 文档的搜索。

  nodename选取此节点的所有子节点
  /从当前节点选取直接子节点
  //从当前节点选取子孙节点
  .选取当前节点
  ..选取当前节点的父节点
  @选取属性

  在这里列出了XPath的常用匹配规则,例如 / 代表选取直接子节点,// 代表选择所有子孙节点,. 代表选取当前节点,.. 代表选取当前节点的父节点,@ 则是加了属性的限定,选取匹配属性的特定节点。

from lxml  etree chardetresponse=urllib.request.urlopen(https://www.dahe.cn)HTML=response.read()chardet1=chardet.detect(HTML)HTML=HTML.decode(chardet1['])etreeHTML=etree.HTML(HTML)myList=etreeHTML.xpath(/HTML/body/div/div/div/div/div/ul/div/li")

BeautifulSoup4是爬虫必学的技能。BeautifulSoup最主要的功能是从网页抓取数据,Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐使用lxml 解析器。

from bs4  BeautifulSoup file = open(./aa.HTML',rb) HTML = file.read() bs = BeautifulSoup(HTML,1)">HTML.parser") # 缩进格式print(bs.prettify())  格式化HTML结构print(bs.Title)  获取Title标签的名称print(bs.Title.name)  获取Title标签的文本内容print(bs.Title.string)  获取head标签的所有内容print(bs.head)  获取第一个div标签中的所有内容print(bs.div)  获取第一个div标签的ID的值print(bs.div[ID"])  获取第一个a标签中的所有内容print(bs.a)  获取所有的a标签中的所有内容print(bs.find_all(a"))  获取ID="u1"print(bs.find(ID=u1 获取所有的a标签,并遍历打印a标签中的href的值for item in bs.find_all():     print(item.get(href 获取所有的a标签,并遍历打印a标签的文本值print(item.get_text())

 

总结

以上是内存溢出为你收集整理的python爬虫零基础实战全部内容,希望文章能够帮你解决python爬虫零基础实战所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1189845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存