重庆建设造价信息网站,网页平面设计培训学校,东莞网站设计找哪里,兼职做网站设计申明#xff1a;仅用作学习用途#xff0c;不提供任何的商业价值。 背景
我需要获得新闻#xff0c;然后tts#xff0c;在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路#xff1a;获得html内容- python的工具库解析#xff0… 申明仅用作学习用途不提供任何的商业价值。 背景
我需要获得新闻然后tts在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路获得html内容- python的工具库解析获得元素中的内容完成。 好家伙我知道我爬取失败了。一堆js代码看得我烦。我一去看页面发现原来新闻的获得是走的接口然后js插入文档的于是啃接口。
又被难住了接口的pageCallback是什么感觉我的经验这个是复杂的js加密之后的因为没有带这个参数可以轻易的通过接口获得想要的数据。 假如没有这个参数我其实可以为所欲为了。所以分析pageCallback这个参数的加密非常耗时间了。也不打算研究我决定换一种方式去研究。 拿出我的终极大招Selenium。模拟用户的操作该不会拦截我吧。
爬虫2.0
使用Selenium模拟用户爬取页面内容并输出成文件。关于Selenium是什么欢迎看这篇文章selenium Python教程。在这里我只讲我主要的实现。
首先作为一款工具脚本我们应该不喜欢窗口界面吧除非你需要动态的观察程序的操作。所以我开启了无头浏览器模式。
# 无头浏览器
chrome_options webdriver.ChromeOptions()
chrome_options.add_argument(--headless)
driver webdriver.Chrome(optionschrome_options)关键的driver拿到之后剩下的过程就简单了。和一般的requests、spider爬虫一样需要获得页面的代码然后解析对应的元素拿到属性或者文本。
# titles
title_elems driver.find_elements(byBy.CLASS_NAME, valueitem-title)
titles [title_elem.text for title_elem in title_elems]是不是很神奇看到了By.CLASS_NAME是不是一下子联想到了CSS了。是的你的预感足够的正确。如果以上的内容带给你足够的震撼和惊奇请继续往下看
# 所有的更新时间
related_elems driver.find_elements(byBy.CSS_SELECTOR, valuediv.item-related span.time)
relateds [related_elem.text for related_elem in related_elems]
# 所有的描述信息
desc_elems driver.find_elements(byBy.CSS_SELECTOR, valuediv.item-desc span)
# 需要去除新闻摘要结尾的内容
descs [desc_item.text[:desc_item.text.rfind()] for desc_item in desc_elems]没错div.item-related span.time这个是什么选择起来着后代选择器。niceCSS的选择器它都支持。 来个小插曲你知道的CSS选择器有哪些 元素选择器 p div类选择器 .highlightID选择器 #id属性选择器 [typetext]后代选择器 ul li子元素选择器 ul li相邻兄弟选择器 h2p通用选择器 * 不要觉得我是多余的了其实这些选择器会了基本上在页面的爬取上就是无敌了。另外selenium还有这几种选择器
class By:Set of supported locator strategies.ID idXPATH xpathLINK_TEXT link textPARTIAL_LINK_TEXT partial link textNAME nameTAG_NAME tag nameCLASS_NAME class nameCSS_SELECTOR css selector常用的还是XPATH TAD_NAME CLASS_NAME CSS_SELECTOR 大家感兴趣的话可以自行的研究。 最后插一句话哈作为后端的开发人员我很希望我的接口、网站是可以正常访问的给用户提供稳定的服务。但是爬虫的话对网站的危害很大的特别是计算机的运行速度要比人快很多倍相当于一下子加重了服务器的负担类似于DOS攻击了。一旦爬虫劫持了流量其它的用户就不能正常的访问了。 所以在后端的接口设计上一般采取的是限流但是也会降低用户的使用体验。所以适当的学习学习就可以啦。也得守住法律的底线话说“python是包四餐的学科”。