Python 爬虫新手教程,最易上手,跟着一起动手

791 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一、什么是爬虫

爬虫就是把一个网站里的内容读取下来,这里我们就要学习一个知识,我们看到的网页是有一种叫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函数来返回源代码

输出:

在这里插入图片描述

细心的人可以看到后面的代码有编码问题 在这里插入图片描述

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

import requests

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

输出 在这里插入图片描述

三、分析源代码

最后要在源代码中筛选出我们要的数据 需要用到模块 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)  # 输出

输出:

在这里插入图片描述

其中核心语句是

 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中写:

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)

输出 在这里插入图片描述

更多有关Python学习经验分享,可以关注我,持续更新。