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函数来返回源代码

输出:

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

要把代码转成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 爬虫新手入门教程的更多相关文章

  1. Python爬虫框架Scrapy教程(1)—入门

    最近实验室的项目中有一个需求是这样的,需要爬取若干个(数目不小)网站发布的文章元数据(标题.时间.正文等).问题是这些网站都很老旧和小众,当然也不可能遵守 Microdata 这类标准.这时候所有网页 ...

  2. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  3. python爬虫如何入门

    学爬虫是循序渐进的过程,作为零基础小白,大体上可分为三个阶段,第一阶段是入门,掌握必备的基础知识,第二阶段是模仿,跟着别人的爬虫代码学,弄懂每一行代码,第三阶段是自己动手,这个阶段你开始有自己的解题思 ...

  4. [转]《Python爬虫学习系列教程》

    <Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...

  5. 安卓自动化测试(2)Robotium环境搭建与新手入门教程

    Robotium环境搭建与新手入门教程 准备工具:Robotium资料下载 知识准备: java基础知识,如基本的数据结构.语法结构.类.继承等 对Android系统较为熟悉,了解四大组件,会编写简单 ...

  6. Xorboot-UEFI新手入门教程

    Xorboot-UEFI新手入门教程        Xorboot-UEFI是一款UEFI下轻量级的图形化多系统引导程序,pauly于2014年国庆节期间发布了预览版.搜了下论坛,关于Xorboot- ...

  7. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  8. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  9. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

随机推荐

  1. pom.xml中web.xml is missing and <failOnMissingWebXml> is set to true错误的解决

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. Docker部署Jenkins 2.285版持续部署集成实践(2)

    前言:上一篇文章中,写到了jenkins搭建,下面记录使用jenkins构建项目实践 1. 以构建.netcore项目为例,如果要构建.netcore项目,需要安装dotnet-sdk包 进入jenk ...

  3. VulnHub靶场渗透之:Gigachad

    环境搭建 VulnHub是一个丰富的实战靶场集合,里面有许多有趣的实战靶机. 本次靶机介绍: http://www.vulnhub.com/entry/gigachad-1,657/ 下载靶机ova文 ...

  4. 003 TCP/IP协议详解(一)

    TCP/IP TCP/IP 意味着 TCP 和 IP 在一起协同工作. TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信. IP 负责计算机之间的通信. TCP 负责将数据分割并装入 IP ...

  5. K8s 部署 Gitlab

    K8s 版本:1.20.6 这里使用的镜像不是官方的,而是 Gitlab 容器化中使用非常多的一个第三方镜像:sameersbn/gitlab,基本上和官方保持同步更新.地址:http://www.d ...

  6. Centos7上安装rabbitmq和使用

    github rpm地址: https://github.com/rabbitmq/erlang-rpm 要安装rabbitmq先安装它的语言 创建erlang repo /etc/yum.repos ...

  7. [转]用C++实现插件体系结构

    本文讨论一种简单却有效的插件体系结构,它使用C++,动态链接库,基于面向对象编程的思想.首先来看一下使用插件机制能给我们带来哪些方面的好处,从而在适当时候合理的选择使用. 1. 增强代码的透明度与一致 ...

  8. malloc 和new , free 和delete的区别

    #include <iostream>using namespace std;class user{ public: int age; int number; void test() { ...

  9. Linux的wget命令详解

    [转载] Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机, ...

  10. MongoDB - 文档之间的关系 + _sort和投影

    1. 文档对象之间的关系 一对一 (one TO one) - 例如: 夫妻 (一个丈夫 对应 一个妻子) - 在MongoDB中, 可以通过内嵌文档的形式来体现出一对一的关系 演示: 首先在 my_ ...