Closed hect0x7 closed 1 year ago
目前使用的正则表达式的方案,有1
个字段是会在反混淆的HTML下失败。
这个字段是author_list
,代表一个本子的作者列表,使用的正则表达式是
pattern_html_album_author_list = [
# 下面这个正则用于缩小范围
compile('作者: <span itemprop="author" data-type="author">(\s*<a.*?>(.*?)</a>)*\s*</span>'),
# 下面这个正则用于捕获所有作者的名称
compile("<a.*?>(.*?)</a>"),
]
这个字段的xpath表达式需求优先级最高,其他字段暂时都能work
css selector不比xpath香,使用beautifulsoup即可,我的Xpath语法也学得不怎么样,可以走捷径在浏览器F12元素选项卡右键需要查询的元素,在右键菜单中找到复制,复制的二级菜单中有复制selector的选项可以直接复制 以下是我未发现jmcomic库之前爬取用的css selector,很久远了,不保证可以使用
page_count: #pageselect > option:nth-child(1)
name: #book-name
章节名称和上传时间 #episode-block > div > div > ul > a (查找所有
章节aid #episode-block > div > div > ul > a的data-album属性 (查找所有
默认作品标签 #intro-block > div:nth-child(3) > span > a[class="btn btn-sm btn-primary"] (查找所有
默认角色标签 #intro-block > div:nth-child(4) > span > a[class="btn btn-sm btn-primary"] (查找所有
默认作者标签 #intro-block > div:nth-child(5) > span > a[class="btn btn-sm btn-primary"] (查找所有
默认标签 #intro-block > div:nth-child(6) > span > a[class="btn btn-sm btn-primary"] (查找所有
用户作品标签 #intro-block > div:nth-child(3) > span > a[class="btn btn-sm btn-default"] (查找所有
用户角色标签 #intro-block > div:nth-child(4) > span > a[class="btn btn-sm btn-default"] (查找所有
用户作者标签 #intro-block > div:nth-child(6) > span > a[class="btn btn-sm btn-default"] (查找所有
用户标签 #intro-block > div:nth-child(5) > span > a[class="btn btn-sm btn-default"] (查找所有
注意这里的顺序child值不是递增的
叙述 head > meta:nth-child(7) 的content属性,记得replace("免費成人H漫線上看", "")
注意这里的head前没有井号
上传时间 #wrapper > div.container > div:nth-child(4) > div > div.panel.panel-default.visible-lg.hidden-xs > div.panel-body > div > div.col-lg-7 > div:nth-child(1) > div:nth-child(10) > span:nth-child(1) 的content属性
更新时间 #wrapper > div.container > div:nth-child(4) > div > div.panel.panel-default.visible-lg.hidden-xs > div.panel-body > div > div.col-lg-7 > div:nth-child(1) > div:nth-child(10) > span:nth-child(2) 的content属性
css selector不比xpath香,使用beautifulsoup即可,我的Xpath语法也学得不怎么样,可以走捷径在浏览器F12元素选项卡右键需要查询的元素,在右键菜单中找到复制,复制的二级菜单中有复制selector的选项可以直接复制 以下是我未发现jmcomic库之前爬取用的css selector,很久远了,不保证可以使用
photo页面:
page_count: #pageselect > option:nth-child(1)
album页面:
name: #book-name 章节名称和上传时间 #episode-block > div > div > ul > a (查找所有 章节aid #episode-block > div > div > ul > a的data-album属性 (查找所有 默认作品标签 #intro-block > div:nth-child(3) > span > a[class="btn btn-sm btn-primary"] (查找所有 默认角色标签 #intro-block > div:nth-child(4) > span > a[class="btn btn-sm btn-primary"] (查找所有 默认作者标签 #intro-block > div:nth-child(5) > span > a[class="btn btn-sm btn-primary"] (查找所有 默认标签 #intro-block > div:nth-child(6) > span > a[class="btn btn-sm btn-primary"] (查找所有 用户作品标签 #intro-block > div:nth-child(3) > span > a[class="btn btn-sm btn-default"] (查找所有 用户角色标签 #intro-block > div:nth-child(4) > span > a[class="btn btn-sm btn-default"] (查找所有 用户作者标签 #intro-block > div:nth-child(6) > span > a[class="btn btn-sm btn-default"] (查找所有 用户标签 #intro-block > div:nth-child(5) > span > a[class="btn btn-sm btn-default"] (查找所有 注意这里的顺序child值不是递增的 叙述 head > meta:nth-child(7) 的content属性,记得replace("免費成人H漫線上看", "") 注意这里的head前没有井号 上传时间 #wrapper > div.container > div:nth-child(4) > div > div.panel.panel-default.visible-lg.hidden-xs > div.panel-body > div > div.col-lg-7 > div:nth-child(1) > div:nth-child(10) > span:nth-child(1) 的content属性 更新时间 #wrapper > div.container > div:nth-child(4) > div > div.panel.panel-default.visible-lg.hidden-xs > div.panel-body > div > div.col-lg-7 > div:nth-child(1) > div:nth-child(10) > span:nth-child(2) 的content属性
感谢你的回复,css selector确实很方便。 不过这个issue面临的问题,我目前是让正则表达式匹配任意空格来解决的,目前能work。 由于jmcomic目前大量采用了正则表达式来解析,我暂时不太打算换到其他技术栈了~但还是感谢你提供的信息
这是一个求助Issue,希望得到帮助。
目前API解析禁漫网页html代码,使用的是正则表达式+反射,代码位于JmcomicText 最近发现,这种方式有问题:
存在网页结构混淆
比如这个域名jm-comic.cc
,返回的网页代码中加入了随机空格。这种方式会影响正则表达式的匹配,导致解析不成功。 因此,应该选用更加彻底的方案,即使用HTML库解析html代码,python有很多这种HTMl库。不过问题就是,我不太会xpath那些东西,也不太打算学(~ ̄▽ ̄)~ 所以想问问,有没有这方面的懂哥大佬愿意帮忙写一下xpath表达式,来帮忙优化此项目。 非常感谢,Salute!🖖🏻