xpath如何获取两个span标签内的内容
各位大佬,最新想爬个小说来看,地址:http://minguodaomuwangshi.wddsnxn.org/,页面是按卷分类的,卷的名字和卷内每一章的span标签没有上下级的关系,如下图,统一都在div[@class="booklist clearfix"]这一级下面,请问有没有什么办法可以获取两个卷名span标签之间的所有章节span呢。import requests
from lxml import etree
def main():
url = 'http://minguodaomuwangshi.wddsnxn.org/'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
html = etree.HTML(r.text)
spans = html.xpath('//div[@class="booklist clearfix"]/span')
for span in spans:
link = span.xpath('./a/@href')
text = span.xpath('./a/text()')
print(text, link)
if __name__ == '__main__':
main() suchocolate 发表于 2020-12-14 15:46
大佬、不是这个需求啊,网页是有一个卷名,第一卷第二卷这种的,是想获取比如第一卷里面的所有标签,因为卷名和章节的名字没有从属关系,就不知道怎么写{:10_282:} 本帖最后由 suchocolate 于 2020-12-14 18:54 编辑
罗同学 发表于 2020-12-14 16:00
大佬、不是这个需求啊,网页是有一个卷名,第一卷第二卷这种的,是想获取比如第一卷里面的所有标签,因为 ...
a空为章节标题,加入总结果列表,并记录其index,如果只取其中一部分内容,那么按照index标号range去取就可以了。
import requests
from lxml import etree
def main():
url = 'http://minguodaomuwangshi.wddsnxn.org/'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
html = etree.HTML(r.text)
vols = html.xpath('//div[@class="booklist clearfix"]/span[@class="v"]/text()')
vol_index = []
n = 0
result = []
spans = html.xpath('//div[@class="booklist clearfix"]/span')
for span in spans:
link = span.xpath('./a/@href')
text = span.xpath('./a/text()')
if link:
# print(text, link)
result.append(, link])
else:
result.append(])
vol_index.append(len(result) - 1)
n = n + 1
print(f'章节inex:{vol_index}')
print(result)
if __name__ == '__main__':
main()
尝试了xpath的模糊定位配合轴定位//span/preceding-sibling::span[@class=""]
勉强能满足楼主的需求,但这个只能满足当前书籍卷一采集的情况,批量采集可能行不通
后面的卷数(卷三卷四等)用上面的更行不通,后来继续改换思路
卷一 //span/following-sibling::span
卷二 //span/following-sibling::span
卷三 //span/following-sibling::span
卷四 //span/following-sibling::span
卷五 //span/following-sibling::span
卷六 //span/following-sibling::span
卷七 //span/following-sibling::span
如果是这样的话分卷采集应该就没有问题了
主要还是网站的问题 如果分卷标题和分卷章节节点为父子关系,xpath写起来会容易很多
可惜不是悬赏贴 不然还能赚点鱼币 孤独的嫖客 发表于 2020-12-14 18:54
尝试了xpath的模糊定位配合轴定位
勉强能满足楼主的需求,但这个只能满足当前书籍卷一采集的情况,批量采集 ...
是啊是啊、要是节点有父子关系就好写了{:10_243:} 罗同学 发表于 2020-12-15 15:19
是啊是啊、要是节点有父子关系就好写了
应该我是最佳啊?
这节点都给你了 为什么不直接用个循环...
页:
[1]