Python极简教程_Python爬取网站数据_非常详细的入门教程

简述:我们都知道,现在市面上Python这门编程语言很火,Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,也就说说类似于PHP这样的弱类型语言,但是功能很强大,常用的功能体现在爬取网页数据,实现思路就是通过网页链接URL得到网页的源代码,根据源代码以及相关正则表达式规则筛选出需要的信息,打到爬取有效信息的目标。

开发环境准备:开发环境用的idea,依赖库分别是requestslxml ,python配置环境变量以及安装python插件,网上教程很多,此处不再赘述,通过使用 pip install lxml 与 pip install requests 命令来安装这两个模块即可,下面通过代码讲解实现过程。

我们先在idea里新建一个python工程,右键新建python-file,新建一个python文件,文件名此处是test-py.py

test-py.py文件导入依赖库

# coding=utf-8
import requests
from lxml import html

依赖库说明:requests用于通过http请求获取网页数据(网页源码),类似于java的HttpClient,lxml用于网页元素筛选。

(注意:网上关于lxml的大多数都是这样导入的,import lxml,由于版本问题报错,对于报错问题网上各种砖家提供的方案亲测基本都不能用,此处用from lxml import html这个方式导入完美解决,至于为什么,笔者没有研究过)

接下来开始爬取网站数据,笔者通过爬取个人博客(http://www.chenyunkeji.com)数据为例在此讲解。

分析数据:用谷歌浏览器打开网站http://www.chenyunkeji.com,按F12,打开开发者调试模式,在源代码中,定位找到第一篇博客的标题部分,可以看到是一个a标签,我们要爬取的是当前页面每篇博客的标题文本内容。

 这时候选中源码的标题元素,右键Copy--->Copy XPath:复制粘贴如下:/html/body/div[1]/div/div[1]/article/header/h2/a

根据这个内容我们很好理解,其实就是a标签的位置,html->body->div[1]->div->div[1]->article->header->h2->a ,到此,大家应该都看得懂了,我们在后面再加个/text(),表示要把a元素的文本内容提取出来,我们最终要爬取数据表达式是这样:/html/body/div[1]/div/div[1]/article/header/h2/a/text(),然后现在只是当前页面其中1篇博客的标题,我们要获取本页面列表中所有的博客标题,那么上面的表达式稍微再改造成这样:/html/body/div[1]/div/div[1]/article/header/h2/a/text(),同时我们想把所有的空格符以及换行符都去掉,那么replace一下就可以了,最终的代码如下:

# coding=utf-8
import requests
from lxml import html
# 获取源码
page = requests.get("http://www.chenyunkeji.com/")
# 打印源码
tree = html.fromstring(page.text)
# content = tree.xpath('//*[@id="mainBox"]/main/div[2]/div/h4/a/text()')
content = tree.xpath('//html/body/div[1]/div/div[1]/article/header/h2/a/text()')
for each in content:
    replace = each.replace('\n', '').replace(' ', '')
    if replace == '\n' or replace == '':
        continue
    else:
        print(replace)

运行该文件,控制台打印如下:

非常完美,我们爬取到了网站 http://www.chenyunkeji.com/ 首页所有的文章列表的标题内容,是不是很神奇,短短10行代码。

本篇案例就分享到这里,欢迎交流,如有问题,扫码关注公众号,联系笔者。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章