鱼C论坛

 找回密码
 立即注册
查看: 1662|回复: 4

[已解决]爬虫爬取全本小说网站上不同类型排行榜的内容时,只能输出每个排行榜的第一本小说??

[复制链接]
发表于 2019-6-3 16:39:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
新手爬虫练习,想爬取全本小说网的各类排行榜上的所有小说信息
网站源码如下:(小弟上传不了相册,请大神点上面链接瞅一眼
爬虫代码如下:
  1. import re


  2. def get_html(urls, encoding_type):
  3.     import requests
  4.     url = urls
  5.     response = requests.get(url)
  6.     response.encoding = encoding_type
  7.     return response.text


  8. html = get_html('https://www.qb5200.tw/top.html', 'gbk')
  9. rank_info = re.findall(r'.*?<h2>(.*?)</h2>.*?<a href="(.*?)">(.*?)</a><span class="rate">(.*?)</span>.*?', html, re.S)

  10. print(rank_info)
复制代码
输出结果如下:
  1. [('小说总榜', '/xiaoshuo/36/36143/', '娇妻在上:墨少,轻轻亲', '都市言情'), ('玄幻魔法', '/xiaoshuo/49/49746/', '最强万界神主', '玄幻魔法'), ('仙侠修真', '/xiaoshuo/65/65069/', '我师叔是林正英', '仙侠修真'), ('都市言情', '/xiaoshuo/36/36143/', '娇妻在上:墨少,轻轻亲', '都市言情'), ('历史军事', '/xiaoshuo/56/56455/', '抗日之铁血战将', '历史军事'), ('网游竞技', '/xiaoshuo/4/4974/', '角色扮演', '网游竞技'), ('科幻灵异', '/xiaoshuo/40/40238/', '驭房有术', '科幻灵异'), ('恐怖惊悚', '/xiaoshuo/63/63258/', '重生九零辣妻撩夫', '恐怖惊悚')]
复制代码

问题就是,为什么只能获取每一个排行榜的第一本小说,而不是将每个排行榜的所有小说都输出???
纯小白,求大神解答


最佳答案
2019-6-4 08:37:26
  1. import requests
  2. from lxml import etree
  3. url = 'https://www.qb5200.tw/top.html'
  4. headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"}
  5. reponse=requests.get(url=url,headers=headers)
  6. #reponse.encoding=("utf-8")
  7. tree = etree.HTML(reponse.text)
  8. data = tree.xpath("//div[@class='wrap rank']/div")
  9. lst0=[]
  10. for x in  range(1,len(data)+1):
  11.     zd={}
  12.     zd["title"] = tree.xpath("//div[@class='wrap rank']/div[%d]/h2"%x)[0].text
  13.     lst=[]
  14.     data2=tree.xpath("//div[@class='wrap rank']/div[%d]/ul/li"%x)
  15.     for each in range(1,len(data2)+1):
  16.       name=tree.xpath("//div[@class='wrap rank']/div[%d]/ul/li[%d]/a"%(x,each))
  17.       leix=tree.xpath("//div[@class='wrap rank']/div[%d]/ul/li[%d]/span"%(x,each))
  18.       lst.append((name[0].text,leix[0].text))
  19.     zd["value"]=lst
  20.     lst0.append(zd)
  21. print(lst0)   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-6-4 08:34:04 | 显示全部楼层
本帖最后由 wp231957 于 2019-6-4 08:36 编辑

e:\pytest>python ex9.py
[{'title': '小说总榜', 'value': [('娇妻在上:墨少,轻轻亲', '都市言情'), ('重生九零辣妻撩夫', '恐怖惊悚'), ('木叶之旗木 家的快乐风男', '恐怖惊悚'), ('我师叔是林正英', '仙侠修真'), ('第一娇', '恐怖惊悚'), ('换爱黄小兰', '都市言情'), ('南城', '都市言情'), ('抗日之铁血战将', '历史军事'), ('重生之已然军婚', '都市言情'), ('重生之都市仙尊', '仙侠修真'), ('星辰变', '仙侠修真'), ('我的老公是大佬', '都市言情'), ('AWM[绝地求生]', '恐怖惊悚'), ('天官赐福', '恐怖惊悚'), ('黄金瞳', '都市 言情')]}, {'title': '玄幻魔法', 'value': [('最强万界神主', '玄幻魔法'), ('天才儿子腹黑娘亲', '玄幻魔法'), ('小桃红', '玄幻魔法'), ('全职高手', '玄幻魔法'), ('绝世神医之逆天魔妃', '玄幻魔法'), ('斗罗大陆外传唐门英雄传', '玄幻魔法'), ('废材纨绔之腹黑邪妃', '玄幻魔法'), ('碎星物语', '玄幻魔法'), ('我有一张沾沾卡', '玄幻魔法'), ('异世之召唤亿万神魔', '玄幻魔法'), ('重生之武神大主播', '玄幻魔法'), ('花重锦官城', '玄幻魔法'), ('邻家冰姐', '玄幻魔法'), ('快穿之如珠如宝', '玄幻魔法'), ('金刚骷髅', '玄幻魔法')]}, {'title': '仙侠修真', 'value': [('我师叔是林正英', '仙侠修真'), ('重生之都市仙尊', '仙侠修真'), ('星辰变', '仙侠修真'), ('重生修真在都市', '仙侠修真'), ('神话降临', '仙侠修真'), ('蛊真人', '仙侠修真'), ('武侠世界从天下第一开始', '仙侠修真'), ('重生洪荒之帝皇', '仙侠修真'), ('飞剑问道', '仙侠修真'), ('血染长生', '仙侠修真'), ('青梅仙道', '仙侠修真'), ('葫芦娃里蜈蚣精', '仙侠修真'), ('神途', '仙侠修真'), ('我有一颗时空珠', '仙侠修真'), ('仙蝉', '仙侠修真')]}, {'title': '都市言情', 'value': [('娇妻在上:墨少,轻轻亲', '都市言情'), ('换爱黄小兰', '都市言情'), ('南城', '都市言情'), ('重生之已然军婚', '都市言情'), ('我的老公是大佬', '都市言情'), ('黄金瞳', '都市言情'), ('学霸的黑科技时代', '都市言情'), ('重生俄罗斯土豪', '都市言情'), ('我的时空旅舍', '都市言情'), ('亿万婚约:老婆娶一送一', '都市言情'), ('盛开(完结+番外)', '都市言情'), ('拒嫁豪门:少奶奶99次出逃', '都市言情'), ('我的极品小姨', '都市言情'), ('老公,这次来 真的', '都市言情'), ('都市少年医生', '都市言情')]}, {'title': '历史军事', 'value': [('抗日之铁血战将', '历史军事'), ('军婚撩人', '历史军事'), ('寒门状元', '历史军事'), ('风谍', '历史军事'), ('逍遥侯', '历史军事'), ('特种兵之兽血沸腾', '历史军事'), ('汉当更强', '历史军事'), ('爆笑宠妃:爷我等你休妻', '历史军事'), ('特种兵之变种人', '历史军事'), ('重生之开国元帅', '历史军事'), ('我在大唐当秀男', '历史军事'), ('下堂王妃要改嫁', '历史军事'), ('神医傻妃:烈夫不二嫁', '历史军事'), ('带着工业革命系统回明朝', '历史军事'), ('最强特种兵传说', '历史军事')]}, {'title': '网游竞技', 'value': [('角色扮演', '网游竞技'), ('我的老婆是大BOSS', '网游竞技'), ('流氓高手', '网游竞技'), ('绝品邪少', '网游竞技'), ('重启游戏时代', '网游竞技'), ('网游之神级吞噬系统', '网游竞技'), ('我能召唤人机', '网游竞技'), ('光头武僧在都市', '网游竞技'), ('网游之血海霸主', '网游竞技'), ('联盟之魔王系统', '网游竞技'), ('斩龙', '网游竞技'), ('[花样]重新开始', '网游竞技'), ('我不该去救那个女孩', '网游竞技'), ('惹上黑暗帝王:第一女盗', '网游竞技'), ('我抢了灭霸的无限手套', '网游竞技')]}, {'title': '科幻灵异', 'value': [('驭房有术', '科幻灵异'), ('惊惧玩笑', '科幻灵异'), ('借阴寿', '科幻灵异'), ('逆行诸天万界', '科幻灵异'), ('男神攻略:快穿女配不炮灰', '科幻灵异'), ('诡神冢', '科幻灵异'), ('南山隐', '科幻灵异'), ('算死命', '科幻灵异'), ('美漫之无限通灵', '科幻灵异'), ('魔鬼考卷', '科幻灵异'), ('洪荒之诸天万界超次元聊天群', '科幻灵异'), ('暗影熊提伯斯的位面之旅', '科幻灵异'), ('会穿越的道观', '科幻灵异'), ('玩转次元位面', '科幻灵异'), ('诸界末日在线', '科幻灵异')]}, {'title': '恐 怖惊悚', 'value': [('重生九零辣妻撩夫', '恐怖惊悚'), ('木叶之旗木家的快乐风男', '恐怖惊悚'), ('第一娇', '恐怖惊悚'), ('AWM[绝地求生]', '恐怖惊悚'), ('天官赐福', '恐怖惊悚'), ('神医凰后', '恐怖惊悚'), ('重生军婚,老公太会撩', '恐怖惊悚'), ('重生小俏媳:首长,早上好!', '恐怖惊悚'), ('快穿之还愿人生路', '恐怖惊悚'), ('早安,霸道老公!', '恐怖惊悚'), ('快穿:这个女配很邪门', '恐怖惊悚'), ('重生空间:首长的军医媳妇', '恐怖惊悚'), ('精灵之全球降临', '恐怖惊悚'), ('娇术', '恐怖惊悚'), ('贫僧', '恐怖惊悚')]}]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-4 08:37:26 | 显示全部楼层    本楼为最佳答案   
  1. import requests
  2. from lxml import etree
  3. url = 'https://www.qb5200.tw/top.html'
  4. headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"}
  5. reponse=requests.get(url=url,headers=headers)
  6. #reponse.encoding=("utf-8")
  7. tree = etree.HTML(reponse.text)
  8. data = tree.xpath("//div[@class='wrap rank']/div")
  9. lst0=[]
  10. for x in  range(1,len(data)+1):
  11.     zd={}
  12.     zd["title"] = tree.xpath("//div[@class='wrap rank']/div[%d]/h2"%x)[0].text
  13.     lst=[]
  14.     data2=tree.xpath("//div[@class='wrap rank']/div[%d]/ul/li"%x)
  15.     for each in range(1,len(data2)+1):
  16.       name=tree.xpath("//div[@class='wrap rank']/div[%d]/ul/li[%d]/a"%(x,each))
  17.       leix=tree.xpath("//div[@class='wrap rank']/div[%d]/ul/li[%d]/span"%(x,each))
  18.       lst.append((name[0].text,leix[0].text))
  19.     zd["value"]=lst
  20.     lst0.append(zd)
  21. print(lst0)   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-4 08:40:20 | 显示全部楼层
此类网站,各种元素书写比较正规的,使用正则永远不是第一选择
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-4 09:23:45 | 显示全部楼层
wp231957 发表于 2019-6-4 08:40
此类网站,各种元素书写比较正规的,使用正则永远不是第一选择

感谢大佬,我先去学习一下xpath
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表