尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python爬虫爬取数据案例

Python爬虫爬取数据案例 一、准备工作1.爬虫协议爬虫协议是每一个爬虫开发者都应该遵守的协议但是他是一个君子协定并不是强制协定但为了维护网络环境大家都应该遵守下把环境搞臭了还是程序员受害。那爬虫协议怎么看呢我们可以瞅瞅B站的爬虫协议获取方式如下https://www.bilibili.com/robots.txt访问上面地址后我们就可以看到B站的爬虫协议了他的不允许爬取的内容有两个大类第二个是首页内容因为首页内容访问量很大如果大家都来爬这个数据那么对B站来说压力会很大一般这类TOC的网站首页都是不允许爬取的。下面再来看下百度的爬虫协议https://www.baidu.com/robots.txt可以看到除了百度声明的一些爬虫外百度禁止一些数据爬取行为因为百度的访问量很大如果大家爬取数据对他压力确实很大也能理解。2.准备工作python安装 requestspip install requestsrequests被誉为python中最好用的三方http客户端包网络请求必备python安装lxml这是一个高性能的html/xml这种标记语言的解析库支持Xpatch语法获取前端资源和数据Xpatch是前端根据标签获取数据的一种原始方式。对于标签语言获取数据很是方便。pipinstalllxml3.lxml基础语法这里主要介绍下爬取数据时获取数据定位元素的语法假设有如下程序htmlstyleheight:100%bodyclasslayui-layout-bodystyleheight:100%;overflow:auto;divclasslayui-layout layui-layout-adminstyleheight:100%inputtypehiddenvaluefalseidcommonLogininputtypehiddenvaluefalseidcommonUserHasVip/divdivclasslayui-layout layui-layout-adminstyleheight:100%inputtypehiddenvaluefalseidcommonLogininputtypehiddenvaluefalseidcommonUserHasVip/div/body/html下面根据上面标签来进行解释语法/ 从根节点的直接子元素查找/html 表示从根节点开始查找所有的html标签返回一个list再比如 /html/body/div 则是查找所有的div标签返回一个list// 从任意位置查找也就是全文超找该标签然后返回list比如 //div则是会返回一个拥有两个div元素的list.点表示从当前元素下开始查找比如使用 //div获取到了两个div标签但是div下的还有其他东西我们这时候就可以基于当前元素继续查找此时使用点 ./input 即可查找到input标签, 如果是.//input则表示 从当前节点的任意位置查找input[n] 获取查到的第n个标签比如如果上面使用//div查到2个如果只想要第一个可以这么写//n[1]注意这里没有下标0的场景如果想要获取最后一个可以直接使用//div[lastIO]这样就能获取到最后一个div了此外还可以增加别的条件//div[style]表示查找拥有属性style的div标签如果再细点还可以//div[style‘height:100%’]表示查找属性值为指定值的元素表示匹配任何元素/html/*则表示查找html下的所有元素* 匹配元素的属性 //div/* 上面示例则表示匹配到了2个divtext() 获取标签内容注意lxml获取标签后不会默认拿文本而是拿的标签如果想要取文本必须使用text(),如//div/input/text(),则表示获取所有input的文本内容。二、爬取数据下面是爬取http://xzqh.mca.gov.cn/statistics/2022.html行政区划网页的示例注意这个网站没有放爬取规范笔者才弄得如果有禁止爬取的声明最好不要处理有一定法律风险。整体示例代码importrequestsashttpfromlxmlimporthtml resphttp.get(http://xzqh.mca.gov.cn/statistics/2022.html)# 注意网页编码有的并不是utf-8不是的话就得指定resp.encodinggb2312# 获取html的格式化对象documenthtml.fromstring(resp.text)# 意思是全局找带有属性colspan2的td标签在找下面的div获取他们的内容str_listdocument.xpath(//td[colspan2]/div/text())forcityinstr_list:print(city)可以发现使用python编写爬虫其实很简单相当于其他语言来说很轻量注意Xpath的路径可以通过如下方式快速获取f12然后选中元素点击图中想要获取的内容右键获取如下选择复制XPath或者复制完整XPath都是可以快速获取路径的
返回列表