家好,我是Python进阶者。
前几天在Python钻石交流群【梦】问了一个Python网络爬虫的问题,这个网站不知道使用了什么反爬手段,都获取不到页面数据。原来的那篇文章竟然爆文了,突破了1.5w的阅读量,欢迎大家围观。
不过这里粉丝的需求有点奇怪,他不需要JS加载后的数据页面,而是需要JS的源网页。昨天在群里又讨论起这个问题,这次一起来看看这个问题。
这里【瑜亮老师】指出异步页面中,标签和数据都是不在页面源码中的。你的这个页面,数据在json,然后js拼装后显示在页面中。如果你想要获取你说的带标签的源码,可以使用自动化模块,例如:selenium(不建议用这个),playwright,drissionpage。
后来【提请问粘给图截报错贴代源码】给出了具体的源码:
from DrissionPage import WebPage
page = WebPage()
# 访问网页并渲染
page.get('https://fx.cmbchina.com/hq', timeout=300)
response = page.html
print(response)
page.quit()
打开network,查看这个网页的渲染方式,你就知道这个网页一开始是没有内容的,全靠js在渲染。
你直接访问这个链接就是没有内容。
先渲染再获取就有了,再者说,你的目的肯定是只要这页面上的表格,表格就是json,获取json链接比获取渲染后的网页方便多了。可以不在页面本身的,使用dom插入,现在的数据页面基本都是这种方式,效率高且安全性好。
【猫药师Kelly】也指出使用drissionpage,配合自带的监听或者mitmproxy,能搞定很多活。
顺利地解决了粉丝的问题。
如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!
大家好,我是Python进阶者。这篇文章主要盘点了一个Python网络爬虫网页JS渲染源网页源码获取的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【梦】提出的问题,感谢【论草莓如何成为冻干莓】、【瑜亮老师】、【猫药师Kelly】给出的思路,感谢【莫生气】等人参与学习交流。
【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。
关于雪球兄,大家应该都熟悉了,之前他写过Python实战文章,好评如潮,没来得及看的小伙伴,可以戳这里了:
盘点常用验证码标注和识别项目线上部署三种方式——VUE前端、Java后端和Python后端部署
Python项目实战篇——常用验证码标注&识别(CNN神经网络模型训练/测试/部署)
Python项目实战篇——常用验证码标注&识别(前端+后端实现高效率数据标注)
Python项目实战篇——常用验证码标注&识别(数据采集/预处理/字符图切割)
Python项目实战篇——常用验证码标注和识别(需求分析和实现思路)
之前也有给大家分享B站的一些文章,感兴趣的话可以看看这个文章,Python网络爬虫+数据分析:手把手教你用Python网络爬虫获取B站UP主10万条数据并用Pandas库进行趣味数据分析。
一提到B站,第一印象就是视频,相信很多小伙伴和我一样,都想着去利用网络爬虫技术获取B站的视频吧,但是B站视频其实没有那么好拿到的,关于B站的视频获取,之前有介绍通过you-get库进行实现,感兴趣的小伙伴可以看这篇文章:You-Get 就是这么强势!。
言归正传,经常在B站上学习的小伙伴们可能经常会遇到有的博主连载几十个,甚至几百个视频,尤其像这种编程语言、课程、工具使用等连续的教程,就会出现选集系列,如下图所示。
当然这些选集的字段我们肉眼也是可以看得到的。只是通过程序来实现的话,可能真没有想象的那么简单。那么这篇文章的目标呢,就是通过Python网络爬虫技术,基于selenium库,实现视频选集的获取。
这篇文章我们用的库是selenium,这个是一个用于模拟用户登录的库,虽然给人的感觉是慢,但是在网络爬虫领域,这个库还是用的蛮多的,用它来模拟登录、获取数据屡试不爽。下面是实现视频选集采集的所有代码,欢迎大家亲自动手实践。
# coding: utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
class Item:
page_num = ""
part = ""
duration = ""
def __init__(self, page_num, part, duration):
self.page_num = page_num
self.part = part
self.duration = duration
def get_second(self):
str_list = self.duration.split(":")
sum = 0
for i, item in enumerate(str_list):
sum += pow(60, len(str_list) - i - 1) * int(item)
return sum
def get_bilili_page_items(url):
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 设置无界面
options.add_experimental_option('excludeSwitches', ['enable-automation'])
# options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2,
# "profile.managed_default_content_settings.flash": 0})
browser = webdriver.Chrome(options=options)
# browser = webdriver.PhantomJS()
print("正在打开网页...")
browser.get(url)
print("等待网页响应...")
# 需要等一下,直到页面加载完成
wait = WebDriverWait(browser, 10)
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@class="list-box"]/li/a')))
print("正在获取网页数据...")
list = browser.find_elements_by_xpath('//*[@class="list-box"]/li')
# print(list)
itemList = []
second_sum = 0
# 2.循环遍历出每一条搜索结果的标题
for t in list:
# print("t text:",t.text)
element = t.find_element_by_tag_name('a')
# print("a text:",element.text)
arr = element.text.split('\n')
print(" ".join(arr))
item = Item(arr[0], arr[1], arr[2])
second_sum += item.get_second()
itemList.append(item)
print("总数量:", len(itemList))
# browser.page_source
print("总时长/分钟:", round(second_sum / 60, 2))
print("总时长/小时:", round(second_sum / 3600.0, 2))
browser.close()
return itemList
get_bilili_page_items("https://www.bilibili.com/video/BV1Eb411u7Fw")
这里用到的选择器是xpath,利用视频示例是B站的《高等数学》同济版 全程教学视频(宋浩老师)视频选集,大家如果想抓取其他视频选集的话,只需要更改上述代码的最后一行的URL链接即可。
在运行过程中小伙伴们应该会经常遇到这个问题,如下图所示。
这个是因为谷歌驱动版本问题导致的,只需要根据提示,去下载对应的驱动版本即可,驱动下载链接:
https://chromedriver.storage.googleapis.com/index.html
我是Python进阶者。这篇文章主要给大家介绍了B站视频选集内容的获取方法,基于网络爬虫,通过selenium库和xpath选择器进行实现,并且给大家例举了常见问题的处理方法。小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
么是文章采集代码
网页文章采集码,是一款利用独特编程技巧的高效网页采集器。它仅需编写特定指令,便能快速获取互联网上的大量文本与图像资料,犹如人工逐页筛选。此外,该技术在信息检索以及数据分析等领域亦产生了显著影响。
在信息化时代,如何有效地获取有价值的信息成为至关重要的问题。传统的人工检索耗时且效果有限,复制粘贴的方式显然已经无法满足需求。而文章采集代码具有显著提升信息收集效率及准确性的优点,因此已逐渐成为学术研究、数据分析及企业市场推广领域必不可少的工具。
文章采集代码的原理
本程序具有卓越的编写理念,主要包括以下四个核心环节:
关键技术在于软件借助HTTP协议,直接获取指定站点的页面原始数据。
剖析网页源码:对于搜集到的文档,深度解读其中的HTML格式与相关数据结构。
我们已经摒弃了提取出来的信息中无用的部分,包括HTML标识和特殊字符等,以揭示其真正的核心价值。
数据存储策略:经过精细筛选与加工后的数据,将按照秩序存入数据库或档案文件,为将来深入分析以及可视化展出提供支持。
我们来详细研究影响数据精度和完整性的重要因素,包括反爬虫措施的应对,以及解决动态加载等复杂难题的有效方法。只有深入理解原理并结合实践经验做出精准策略调整,才能创建出优质且稳定运行的文章采集软件代码。
常见的文章采集工具
数字化浪潮日益加速,促使众多文本采集工具应运而生,为提升开发者工作效能立下汗马功劳。此篇特推荐几款表现优异且功能强大的中期优秀采集工具以供参考:
强力推荐Beautiful Soup:作为Python编程中杰出的HTML处理利器,助力您迅速提取HTML和XML文档中的关键信息。
Scrapy:这是Python开发的开源网络爬虫框架,其出色的实用性和广泛应用领域彰显了其优异品质。
Selenium:专攻网络应用测试领域,尤为擅长仿真用户操作行为。
根据不同环境合理选用工具,以满足多元化需求;用户需明确自我需求,并在科学评估技术水准的基础上作出适宜选择。
文章采集代码在实际应用中的挑战
尽管文章采集代码具备高效便捷的优点,但在实践操作过程中仍需面临诸多困难。主要挑战包括以下几点:
以应对恶意爬虫为例,为了规避网站遭到非法访问并确保数据安全性,许多网站已实施高效的反爬虫策略。因此,在文章代码编写时,务必避免触发此类防范措施。
如今众多企业均利用JavaScript实现在线实时数据加载,为进一步提高此类网页信息获取效率,推荐采用诸如Selenium等自动化测试工具进行模拟操控。
随着信息和网页编辑形式多样化(例如HTML、JSON、XML等格式),数据处理的复杂性急剧增加。
在众多挑战下,开发者必须深化技能,以探索满足项目个性需求的最优方案。
未来文章采集技术发展趋势
在现今大数据和科技迅猛发展的环境下,文章采编技术正逐步展现出如下关键趋势。
随着AI科技的飞速发展,文章采集工作正逐步运用先进的算法与技术。如面向网页结构解析的机器学习技术,能有效地自动识别并提取关键信息。
多元化趋势日益明显:随着互联网及移动设备的广泛应用,各种视听类媒体呈现出快速创新之势。在未来的信息收集及展示环节中,深度加工及精密分析将倍受关注。
关注隐私保护提高警惕:鉴于当下社会隐私意识不断提升,在收集和利用用户自创内容时,必须坚决尊重其隐私权。
展望未来,文章采集技术将逐步向智能性增强、多元性拓展并注重用户体验与隐私保护的趋势迈进。
*请认真填写需求信息,我们会在24小时内与您取得联系。