鱼C论坛

 找回密码
 立即注册
查看: 2324|回复: 9

[求助] 爬豆瓣Top250的亿点小问题

[复制链接]
发表于 2020-6-7 15:29:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 WangJS 于 2020-6-7 15:30 编辑

爬虫的前面都没有问题

批注 2020-06-07 151816.jpg

就是到了第10页,有四个电影没有简介

{[VXN9B{Z096$RN0ZU~YW.png }RQ07WC[$F8KT[AVKRFVAW2.png W3B_ELC2Y[AI86W5`_@SW9V.png

就出现了简介与电影名对不上的问题

FXT`T6L660H@2S`V~}8@_7G.png
因为zip的问题,最后面4个电影都没有保存到列表里

我自己也想了个办法:
就是判断一下有没有<p class="quote">这个标签,没有就把简介一项设为空的

LAQ3%J%]{WY1MH8@{{_PO`K.png
最后发现自己不会爬取一小部分的源代码

所以来求助了



这是我现在的代码:
  1. import requests
  2. import openpyxl
  3. from lxml import etree

  4. """
  5. 先创建一个表格
  6. """

  7. # 实例化
  8. wb = openpyxl.Workbook()
  9. sheet = wb.active
  10. sheet.title = 'Top250'
  11. sheet.append(['序号', '名称', '评分', '简介'])
  12. sheet.column_dimensions['B'].width = 30

  13. """
  14. 爬虫 + 写入表格
  15. """
  16. # 请求头
  17. headers = {
  18.     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
  19. # 第一页的url
  20. url = "https://movie.douban.com/top250?start=0&filter="

  21. # 共10页,循环10次
  22. for zzz in range(10):
  23.     # 获取源代码
  24.     Res = requests.get(url, headers=headers).text
  25.     # 解析代码
  26.     data = etree.HTML(Res)
  27.     # 获取电影相关
  28.     index = data.xpath('//em[@class=""]')
  29.     name = data.xpath('//div[@class="hd"]//span[@class="title"][1]')
  30.     score = data.xpath('//span[@class ="rating_num"]')
  31.     Introduction = data.xpath('//p[@class="quote"]/span[@class="inq"]')
  32.     # 打印单个电影相关
  33.     for dx, n, s, i, x in zip(index, name, score, Introduction, range(1, 251)):
  34.         index_text = dx.text
  35.         name_text = n.text
  36.         score_text = s.text
  37.         Introduction_text = i.text

  38.         end_list = [index_text, name_text, score_text, Introduction_text]

  39.         # print(end_list)
  40.         sheet.append(end_list)
  41.         if zzz != 9:
  42.             z_url = data.xpath('//span[@class="next"]//@href')[0]
  43.     # 拼接下一页链接
  44.     url = 'https://movie.douban.com/top250' + z_url

  45. """
  46. 保存表格
  47. """

  48. wb.save(r"C:\Users\86185\Desktop\豆瓣Top250.xlsx")
  49. print('保存成功!')
复制代码


先谢谢大佬们了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-7 15:52:21 | 显示全部楼层
最后发现自己不会爬取一小部分的源代码

这个是什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 15:55:12 | 显示全部楼层
qiuyouzhi 发表于 2020-6-7 15:52
这个是什么意思?

我想把bd标签里的所有代码爬下来
然后判断有没有p class="quote"
但是……不会啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 16:08:40 | 显示全部楼层
WangJS 发表于 2020-6-7 15:55
我想把bd标签里的所有代码爬下来
然后判断有没有p class="quote"
但是……不会啊

你直接用xpath判断呗
xpath('/p[@class="quote"]')
/p前面填路径,然后看列表是否为空不就得了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 16:12:28 | 显示全部楼层
qiuyouzhi 发表于 2020-6-7 16:08
你直接用xpath判断呗
xpath('/p[@class="quote"]')
/p前面填路径,然后看列表是否为空不就得了


具体咋做呢?

帮忙改一下呗
我自己做的就是没有这个标签就直接跳过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 17:30:17 | 显示全部楼层
qiuyouzhi 发表于 2020-6-7 16:08
你直接用xpath判断呗
xpath('/p[@class="quote"]')
/p前面填路径,然后看列表是否为空不就得了

这样不行吧,Xpath 如果没匹配到会直接忽略掉这次匹配,匹配下一个对应的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 17:04:08 | 显示全部楼层
Twilight6 发表于 2020-6-7 17:30
这样不行吧,Xpath 如果没匹配到会直接忽略掉这次匹配,匹配下一个对应的

是啊,都没有没有这个标签
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 17:06:42 | 显示全部楼层
WangJS 发表于 2020-6-10 17:04
是啊,都没有没有这个标签

  过了 0202年了才回复,我已经是这个账号的 第九代传人了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 17:08:13 | 显示全部楼层
Twilight6 发表于 2020-6-10 17:06
过了 0202年了才回复,我已经是这个账号的 第九代传人了

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 17:47:44 | 显示全部楼层
Twilight6 发表于 2020-6-10 17:06
过了 0202年了才回复,我已经是这个账号的 第九代传人了

????????????????????????????????????????????????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 20:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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