python 爬虫新手入门教程

python 爬虫新手入门教程python爬虫新手教程一、什么是爬虫爬虫就是把一个网站里的内容读取下来这里我们就要学习一个知识我们看到的网页是有一种叫HTML的语言编写的他可以给文字显示不同的样式如:<p&gt

大家好,又见面了,我是你们的朋友全栈君。

python 爬虫新手教程

一、什么是爬虫

爬虫就是把一个网站里的内容读取下来

这里我们就要学习一个知识

我们看到的网页是有一种叫HTML的语言编写的

他可以给文字显示不同的样式

如:<p>hello</p> 就会显示段落:hello

二、如何获取网页的内容

一般爬虫不会把网页内容爬下来

而是把网页源代码爬下来

就好比说:hello 会爬到 <p>hello</p>

如果要在浏览器上看源代码

只需在网页上右键点击 选择查看网页源代码即可

那么怎么用python把源代码爬下来呢?

这是要下载一个模块

在cmd里输入:

pip install requests

然后就可以用模块requests爬网页了

import requests  # 导入模块

url = 'https://sina.com.cn'  # 要爬的网址
html = requests.get(url)  # 获取网页源代码
print(html.text)  # 输出 注:需要text函数来返回源代码

输出:

<span role="heading" aria-level="2">python 爬虫新手入门教程

 

细心的人可以看到后面的代码有编码问题

<span role="heading" aria-level="2">python 爬虫新手入门教程

要把代码转成utf-8中文编码

import requests

url = 'https://sina.com.cn'
html = requests.get(url)
html.encoding = 'utf-8'  # 将编码设为utf-8中文编码
print(html.text)

输出

<span role="heading" aria-level="2">python 爬虫新手入门教程

三、分析源代码

最后要在源代码中筛选出我们要的数据

需要用到模块 lxml

在cmd里输入:

pip install lxml

然后就要使用lxml来筛选数据

import requests
from lxml import etree

url = 'https://sina.com.cn'
html = requests.get(url)
html.encoding = 'utf-8'
element = etree.HTML(html.text)  # 获取html
result = element.xpath('//a/text()')  # 进行筛选

for i in result:
    print(i)  # 输出

输出:

<span role="heading" aria-level="2">python 爬虫新手入门教程

 

 

其中核心语句是

result = element.xpath(‘//a/text()’)

而 //a/text() 的意思是获取所以的a标签的值

而常用的xpath语法如下

nodename      选取此节点的所有子节点
/         从当前节点选取直接子节点
//         从当前节点选取子孙节点
.         选取当前节点
..         选取当前节点的父节点
@        选取属性
*          通配符,选择所有元素节点与元素名
@*        选取所有属性
[@attrib]          选取具有给定属性的所有元素
[@attrib=’value’]         选取给定属性具有给定值的所有元素
[tag]        选取所有具有指定元素的直接子节点
[tag=’text’]        选取所有具有指定元素并且文本内容是text节点

 四、筛选实例

如果要在sina.com.cn读取部分新闻

 <span role="heading" aria-level="2">python 爬虫新手入门教程

 

那么要在键盘上按下F12

点左上角的按钮

 <span role="heading" aria-level="2">python 爬虫新手入门教程

鼠标悬停在新闻上再点击

在代码栏中找新闻

 <span role="heading" aria-level="2">python 爬虫新手入门教程

 

 再找到所有新闻的父元素

<span role="heading" aria-level="2">python 爬虫新手入门教程

 

 

这里可以看到ul的class为list-a news_top

在python中写:

import requests
from lxml import etree

url = 'https://sina.com.cn'
html = requests.get(url)
html.encoding = 'utf-8'
element = etree.HTML(html.text)
result = element.xpath('//ul[@class="list-a news_top"]//a/text()')  # 进行筛选

for i in result:
    print(i)

 输出

<span role="heading" aria-level="2">python 爬虫新手入门教程

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155837.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用settimeout如何实现倒计时_javascript一分钟倒计时代码

    用settimeout如何实现倒计时_javascript一分钟倒计时代码<!–8秒倒计时–><p><spanid=”time”></span>秒后自动跳转到老版本</p><!–js部分–>functioncountDown(secs,url){//secs–设置倒计时秒数,url–要跳转的链接 vartime=document.getElementById(“time”) time.innerHTML=secs//页面上显示所设定的倒计时时长 if

    2022年10月4日
    4
  • a标签下划线的距离问题[通俗易懂]

    a标签下划线的距离问题[通俗易懂]需求a标签下划线距离太接近了,需要调整一下页面代码<pclass=”text_align_r”><spanclass=”ordersave_info”><s:textname=”order_submited_tip”/></span><ahref=”/to_be_signed.html”><s:textname=”order_submited_a_tip”/></a></p&

    2022年6月7日
    50
  • string转map_中将转业可以任省长吗

    string转map_中将转业可以任省长吗暴力的直接Map对象toString()存,后面取出是就是用再转换为MapString转Map:JSONObjectjsonobject=JSONObject.fromObject(str);rMap=(Map<String,Object>)jsonobject;但很多时候并不能直接将Map对象的toString()而是应该转换为JsonObject后再调用toString()后存入就正常了Map<String,Object>map=newHashMa

    2025年8月31日
    6
  • vboxmanage 常用命令

    vboxmanage 常用命令vBoxManagestartvm”pms(10.0.2.18)”-typeheadlessvBoxManagestartvm”spm(10.0.2.17)”-typeheadless查看有哪些虚拟机VBoxManagelistvms查看虚拟的详细信息VBoxManagelistvms–long查看运行着的虚拟机VBoxManagelistrunningvms开启虚拟机在后台运行VBoxManage…

    2022年5月3日
    45
  • mac上Latex的安装及使用教程「建议收藏」

    mac上Latex的安装及使用教程「建议收藏」latex的安装官网下载地址:http://tug.org/mactex/以前在Mac上装Tex/LaTeX很麻烦,现在容易多了,只需要下载单个软件包MacTeX.mpkg.zip即可,安装后会在Applications下生成一个Tex目录,Tex/LaTeX编辑器TeXShop,reference工具BibDesk,拼写检查工具Excalibur等都在这个目…

    2022年5月11日
    151
  • JAVA 新手入门

    JAVA 新手入门JAVA新手入门前言基础语法Java的语言特性面向对象的思想接口泛型前言对于JDK的安装和环境配置,网上已经有很多资料,比如:这个是我随便搜的。至于编辑器的话,我个人使用的是IDEA,因为刚好有教育邮箱,可以免费使用(这一点对于没有收入来源的学生来讲真的很赞)另外,我是学习过C++的一名普通学生,所以之后的很多内容,我都会相较于C++来比较学习,这样也便于快速理解,或许对于没有C++或类似基础的同胞们不太友好,请谅解。基础语法进入正题,对于任何一门语言,相信绕不过的第一个程序,自然就是Hell

    2022年6月9日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号