对于大多数朋友而言,爬虫绝对是学习 python 的最好的起手和入门方式。因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都可以成功入门。本文想针对某一网页对 python 基础爬虫的两大解析库( BeautifulSoup 和 lxml )和几种信息提取实现方法进行分析,以开 python 爬虫之初见。

基础爬虫的固定模式

笔者这里所谈的基础爬虫,指的是不需要处理像异步加载、验证码、代理等高阶爬虫技术的爬虫方法。一般而言,基础爬虫的两大请求库 urllib 和 requests 中 requests 通常为大多数人所钟爱,当然 urllib 也功能齐全。两大解析库 BeautifulSoup 因其强大的 HTML 文档解析功能而备受青睐,另一款解析库 lxml 在搭配 xpath 表达式的基础上也效率提高。就基础爬虫来说,两大请求库和两大解析库的组合方式可以依个人偏好来选择。

笔者喜欢用的爬虫组合工具是:

requests + BeautifulSoup

requests + lxml

同一网页爬虫的四种实现方式

笔者以腾讯新闻首页的新闻信息抓取为例。

首页外观如下:

比如说我们想抓取每个新闻的标题和链接,并将其组合为一个字典的结构打印出来。首先查看 HTML 源码确定新闻标题信息组织形式。

可以目标信息存在于 em 标签下 a 标签内的文本和 href 属性中。可直接利用 requests 库构造请求,并用 BeautifulSoup 或者 lxml 进行解析。

方式一: requests + BeautifulSoup + select css选择器

# select method

import requests

from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}

url = 'http://news.qq.com/'

Soup = BeautifulSoup(requests.get(url=url, headers=headers).text.encode("utf-8"), 'lxml')

em = Soup.select('em[class="f14 l24"] a')

for i in em:

title = i.get_text()

link = i['href']

print({'标题': title,

'链接': link

})

很常规的处理方式,抓取效果如下:

方式二: requests + BeautifulSoup + find_all 进行信息提取

# find_all method

import requests

from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}

url = 'http://news.qq.com/'

Soup = BeautifulSoup(requests.get(url=url, headers=headers).text.encode("utf-8"), 'lxml')

em = Soup.find_all('em', attrs={'class': 'f14 l24'})for i in em:

title = i.a.get_text()

link = i.a['href']

print({'标题': title,

'链接': link

})

同样是 requests + BeautifulSoup 的爬虫组合,但在信息提取上采用了 find_all 的方式。效果如下:

方式三: requests + lxml/etree + xpath 表达式

# lxml/etree method

import requests

from lxml import etree

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}

url = 'http://news.qq.com/'

html = requests.get(url = url, headers = headers)

con = etree.HTML(html.text)

title = con.xpath('//em[@class="f14 l24"]/a/text()')

link = con.xpath('//em[@class="f14 l24"]/a/@href')

for i in zip(title, link):

print({'标题': i[0],

'链接': i[1]

})

使用 lxml 库下的 etree 模块进行解析,然后使用 xpath 表达式进行信息提取,效率要略高于 BeautifulSoup + select 方法。这里对两个列表的组合采用了 zip 方法。python学习交流群:125240963效果如下:

方式四: requests + lxml/html/fromstring + xpath 表达式

# lxml/html/fromstring method

import requests

import lxml.html as HTML

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}

url = 'http://news.qq.com/'

con = HTML.fromstring(requests.get(url = url, headers = headers).text)

title = con.xpath('//em[@class="f14 l24"]/a/text()')

link = con.xpath('//em[@class="f14 l24"]/a/@href')

for i in zip(title, link):

print({'标题': i[0],'链接': i[1]

})

跟方法三类似,只是在解析上使用了 lxml 库下的 html.fromstring 模块。抓取效果如下:

很多人觉得爬虫有点难以掌握,因为知识点太多,需要懂前端、需要python熟练、还需要懂数据库,更不用说正则表达式、XPath表达式这些。其实对于一个简单网页的数据抓取,不妨多尝试几种抓取方案,举一反三,也更能对python爬虫有较深的理解。长此以往,对于各类网页结构都有所涉猎,自然经验丰富,水到渠成。

总结

以上所述是小编给大家介绍的Python爬虫的两套解析方法和四种爬虫实现过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

python爬虫详细步骤-Python爬虫的两套解析方法和四种爬虫实现过程相关推荐

  1. 【Python基础】Python爬虫的两套解析方法和四种信息提取方式

    Python爬虫 Author:Iouwill Machine Learning Lab 分享一篇往日旧文章,非常实用. 对于大多数朋友而言,爬虫绝对是学习python的最好的起手和入门方式.因为爬虫 ...

  2. python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于凌晨安全,作者 MoLing 1. 爬虫就是模拟浏览器抓取东西,爬虫 ...

  3. python爬虫详细步骤-Python爬虫实践入门,超详细

    1.前言 学习Python二个多月啦,周末时开始兴趣学习爬虫,虽然有点概念,但是也折腾了大半天,下面就开始简要记录一下吧. 2.需要的准备 Python:需要基本的python语法基础 request ...

  4. python爬虫详细步骤-Python爬虫的步骤和工具

    #四个步骤 1.查看crawl内容的源码格式 crawl的内容可以是 url(链接),文字,图片,视频 2.请求网页源码 (可能要设置)代理,限速,cookie 3.匹配 用正则表达式匹配 4.保存数 ...

  5. 电脑安装python步骤-windows10系统安装python的详细步骤

    Python是一门受广大用户所喜爱欢迎的.使用广泛的语言.最近,就有一些升级win10正式版的用户反映自己想要在新系统中安装Python软件,但是又不知道该如何操作.接下来,小编就为大家分享win10 ...

  6. 安装python应该先安装pycharm还是python_Pycharm及python安装详细步骤及PyCharm配置整理(推荐)...

    首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址: https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载. ...

  7. python123安装教程_小白安装Python环境详细步骤!

    昨天,有小伙伴向我反映,他对我说"你好像还没教过我安装Python的吧?"听到这句话,我不禁汗颜起来,我的确好像没太注意Python学习的基础了,一直发各种爬虫与初学者看不懂的代码 ...

  8. python官方下载步骤-Python 下载及安装详细步骤

    安装python分三个步骤: *下载python *安装python *检查是否安装成功 1.下载Python (2)选择下载的版本 (3)点开Download后,找到下载文件 Gzipped sou ...

  9. python安装详细步骤mac_Mac安装python3的方法步骤

    Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的. 现在 Mac 上默认安装的 python 版本为 2.7 版本,若 安装 新版本需要 通过 该地址进行下载: https ...

最新文章

  1. linux小白-基础命令-useradd
  2. HDU 2704 Bulletin Board
  3. codeforces 516c// Drazil and Park// Codeforces Round #292(Div. 1)
  4. java 文件夹存在文件_Java判断是否存在文件和文件夹
  5. Hibernate,Session清理缓存时间点
  6. vba 数组赋值_VBA数组与字典解决方案第31讲:VBA数组声明及赋值后的回填方法
  7. 禁用sslv3协议linux,SSLv3协议漏洞修复方法
  8. 商品详情页代码html,商品详情页food.vue
  9. 计算机用户报表清单,以下英文缩写和中文名字的对照中正确的是()。A.URL——用户报表清单B.CAD——计算机辅助设计C.USB——不...
  10. 甘肃省谷歌卫星地图下载
  11. 基于STM32-蜂鸣器
  12. OSPF三种验证配置
  13. mac如何使用命令行删除文件
  14. 密集创投迎来爆发期 今年会是链游之年么?
  15. 1255B. Fridge Lockers Codeforce题解
  16. 百度Apollo计划跟踪:感知与预测中神经网络的分析
  17. 5大保障思维模型, 揭秘温莎大师如何做生活应用决策
  18. Spring事务源码(一)
  19. xp服务器修改登录密码,xp服务器开机密码设置
  20. ubuntu下LaTeX的中文输入法与中文配置

热门文章

  1. 读书笔记 《Perl语言入门》 Day 1
  2. python学习笔记-36 文件读写
  3. JAVASE8流库Stream学习总结(三)
  4. 对数据库进行黑盒测试操作?
  5. Remoting和Webservice有什么区别
  6. Silverlight 项目开发准则参考
  7. 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...
  8. ASP.NET Core 中使用负载均衡时获取客户端 IP
  9. python学习之路
  10. ASP.NET Core MVC – Caching Tag Helpers