本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云 作者:拓荒者

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )

在做爬虫的过程中,网页元素的定位是比较重要的一环,本文总结了python爬虫中比较常用的三种定位网页元素的方式。

1.普通的BeautifulSoup find系列操作

2.BeautifulSoup css选择器

  1. xpath

这三种方式灵活运用,再配合上正则表达式,没有什么网页能难倒你啦。

我们以获取豆瓣电影top250第一页的电影标题为例来比较:

import requestsfrom bs4 import BeautifulSoupfrom lxml import etree# 通过find定位标签# BeautifulSoup文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.htmldef bs_parse_movies(html):movie_list = []soup = BeautifulSoup(html, "lxml")# 查找所有class属性为hd的div标签div_list = soup.find_all('div', class_='hd')# 获取每个div中的a中的span(第一个),并获取其文本for each in div_list:movie = each.a.span.text.strip()movie_list.append(movie)return movie_list# css选择器定位标签# 更多ccs选择器语法:http://www.w3school.com.cn/cssref/css_selectors.asp# 注意:BeautifulSoup并不是每个语法都支持def bs_css_parse_movies(html):movie_list = []soup = BeautifulSoup(html, "lxml")# 查找所有class属性为hd的div标签下的a标签的第一个span标签div_list = soup.select('div.hd > a > span:nth-of-type(1)')# 获取每个span的文本for each in div_list:movie = each.text.strip()movie_list.append(movie)return movie_list# XPATH定位标签# 更多xpath语法:https://blog.csdn.net/gongbing798930123/article/details/78955597def xpath_parse_movies(html):et_html = etree.HTML(html)# 查找所有class属性为hd的div标签下的a标签的第一个span标签urls = et_html.xpath("//div[@class='hd']/a/span[1]")movie_list = []# 获取每个span的文本for each in urls:movie = each.text.strip()movie_list.append(movie)return movie_listdef get_movies():headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36','Host': 'movie.douban.com'}link = 'https://movie.douban.com/top250'r = requests.get(link, headers=headers, timeout=10)print("响应状态码:", r.status_code)if 200 != r.status_code:return None# 三种定位元素的方式:# 普通BeautifulSoup findreturn bs_parse_movies(r.text)# BeautifulSoup css selectreturn bs_css_parse_movies(r.text)# xpathreturn xpath_parse_movies(r.text)movies = get_movies()print(movies)

(干货)你知道python爬虫定位网页元素有几种方式嘛,今天带你一一了解。相关推荐

  1. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  2. Python之字典查找元素(3种方式)

    本文描述的是查找字典的某一个元素(字典遍历元素请点击->这里) 上下文代码 smart_girl = {"name":"yuan wai", " ...

  3. python 爬虫The One的 数据两种方式

    系统:windows 语言:python 工具:pycharm 需要的包:beautifulsoup.requests 安装以上的包,方法类似, 手动方式 任务:爬300条.采用多线程.非多线程 单线 ...

  4. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  5. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  6. seleniumpython定位网页元素方法_使用Selenium对网页元素进行定位的诸种方法

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...

  7. seleniumpython定位网页元素方法_Python+Selenium 定位元素

    1.摘取网页上所有邮箱 练习场景:在某一个网页上有些字段是我们感兴趣的,我们希望摘取出来,进行其他操作.但是这些字段可能在一个网页的不同地方.例如,我们需要在关于百度页面-联系我们,摘取全部的邮箱. ...

  8. python爬虫解决网页重定向问题

    python爬虫解决网页重定向问题 参考文章: (1)python爬虫解决网页重定向问题 (2)https://www.cnblogs.com/zhumengke/articles/9618368.h ...

  9. html css整理笔记,HTML CSS整理笔记 (八) 定位网页元素

    ----8 定位网页元素---- 51.Position属性:指定盒子的位置,相对它父级的位置或它自身应该在的位置. (1)static 默认无定位,元素按照标准文档布局. (2)relative相对 ...

最新文章

  1. boost::fusion::count用法的测试程序
  2. layui的checkbox示例
  3. html5简历阅读,HTML5 移动简历模板
  4. jQuery Mobile 学习资料
  5. Power Shell08当你远程运行powershell指令(不需要管理员权限)
  6. element-ui上传图片的使用upload
  7. 生鲜电商进入2.0时代,美团还有“后招”吗?
  8. 后渗透篇:清理windows入侵痕迹总结【详细】
  9. 动软DBUtility类库DbHelperSQLP实现多数据库连接
  10. 怎么释放mysql连接_数据库连接释放问题
  11. 如何看台式机计算机编号,如何查看台式电脑的主机编号和型号
  12. 教你同时分析圆通快递多个单号的物流情况
  13. 齿轮标准模数c语言编程,齿轮标准模数可以使用( )表示
  14. miui11升级鸿蒙,MIUI11稳定版首批推送来了 12款小米机型可升级
  15. 地震学类毕业论文文献都有哪些?
  16. SDWAN优化金融行业网络架构
  17. APFS简要指南(Apple File System Guide)
  18. Java延时的三种方法
  19. JavaScript选择器的使用说明
  20. SVG阴影、渐变,文字

热门文章

  1. 语音文件转换成文档(基于阿里云服务)
  2. pytorch中nn.Dropout的使用技巧
  3. 小数 二进制 的 表示与转换
  4. AngelToken钱包——值得投资与存币的钱包
  5. TCP-超时重传和快速重传
  6. ubuntu进去安全模式_ubuntu命令行模式怎么进入图形界面
  7. MATLAB 数学应用 微分方程 边界值问题 求解具有未知参数的BVP
  8. 【干货】微服务设计的基础知识
  9. java后端开发面经-多个公司
  10. Java开发 - Elasticsearch初体验