大家好,又见面了,我是你们的朋友全栈君。
python 爬虫新手教程
一、什么是爬虫
爬虫就是把一个网站里的内容读取下来
这里我们就要学习一个知识
我们看到的网页是有一种叫HTML的语言编写的
他可以给文字显示不同的样式
如:<p>hello</p> 就会显示段落:hello
二、如何获取网页的内容
一般爬虫不会把网页内容爬下来
而是把网页源代码爬下来
就好比说:hello 会爬到 <p>hello</p>
如果要在浏览器上看源代码
只需在网页上右键点击 选择查看网页源代码即可
那么怎么用python把源代码爬下来呢?
这是要下载一个模块
在cmd里输入:
代码语言:javascript复制pip install requests
然后就可以用模块requests爬网页了
代码语言:javascript复制import requests # 导入模块
url = 'https://sina.com.cn' # 要爬的网址
html = requests.get(url) # 获取网页源代码
print(html.text) # 输出 注:需要text函数来返回源代码
输出:
细心的人可以看到后面的代码有编码问题
要把代码转成utf-8中文编码
代码语言:javascript复制import requests
url = 'https://sina.com.cn'
html = requests.get(url)
html.encoding = 'utf-8' # 将编码设为utf-8中文编码
print(html.text)
输出
三、分析源代码
最后要在源代码中筛选出我们要的数据
需要用到模块 lxml
在cmd里输入:
代码语言:javascript复制pip install lxml
然后就要使用lxml来筛选数据
代码语言:javascript复制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) # 输出
输出:
其中核心语句是
result = element.xpath(‘//a/text()’)
而 //a/text() 的意思是获取所以的a标签的值
而常用的xpath语法如下
nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 * 通配符,选择所有元素节点与元素名 @* 选取所有属性 [@attrib] 选取具有给定属性的所有元素 [@attrib=’value’] 选取给定属性具有给定值的所有元素 [tag] 选取所有具有指定元素的直接子节点 [tag=’text’] 选取所有具有指定元素并且文本内容是text节点
四、筛选实例
如果要在sina.com.cn读取部分新闻
那么要在键盘上按下F12
点左上角的按钮
鼠标悬停在新闻上再点击
在代码栏中找新闻
再找到所有新闻的父元素
这里可以看到ul的class为list-a news_top
在python中写:
代码语言:javascript复制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)
输出
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155837.html原文链接:https://javaforall.cn