鱼C论坛

 找回密码
 立即注册
查看: 1258|回复: 8

[已解决]爬取豆瓣 电影 标题问题

[复制链接]
发表于 2020-6-2 20:25:13 | 显示全部楼层 |阅读模式

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

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

x
请问如何获取审查元素的电影名称,  我怎么是获得一个空列表?哪里错了了吗
最佳答案
2020-6-3 07:45:36

你看3L 啊  被无视的赶脚有点不舒服  这样改就可以了

豆瓣有的时候爬到的名称 不是在 a.span里  有的就在a里要加个判断  看代码吧
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import re


  4. def open_url(url):
  5.     hearders = {
  6.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
  7.     res = requests.get(url, headers=hearders)
  8.     return res


  9. def find_depth(res):
  10.     pass


  11. def biaoti(res):
  12.     # 电影名字
  13.     movies = []
  14.     req = BeautifulSoup(res.text, 'html.parser')
  15.     name = req.find_all('div', class_=['pl2'])
  16.     for each1 in name:
  17.         if not (each1.a.span):
  18.             movies.append((each1.a.text).strip())
  19.             continue
  20.         movies.append(each1.a.span.text)
  21.     print(movies)

  22.     # 评分
  23.     ranks = []
  24.     rank = req.find_all('span', class_="rating_nums")
  25.     for each2 in rank:
  26.         ranks.append(each2.text)
  27.     print(ranks)
  28.     # 内容
  29.     messages = []
  30.     message = req.find_all("p", class_=['pl'])
  31.     for each3 in message:
  32.         messages.append(each3.text)

  33.     result = []
  34.     moveies_num = len(movies)
  35.     for i in range(moveies_num):
  36.         title = movies[i] + '->' + ranks[i] + '->' + messages[i] + '\n'
  37.         result.append(title)
  38.     print(result)
  39.     return result


  40. def main():
  41.     url = 'https://movie.douban.com/chart'
  42.     res = open_url(url)
  43.     nr = biaoti(res)
  44.     with open('豆瓣本周排行名单.txt','w',encoding='utf-8') as f:
  45.         for a in nr:
  46.             f.write(a+'\n')
  47. main()
复制代码
QQ图片20200602202345.png
QQ图片20200602202340.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 20:49:04 | 显示全部楼层
发下代码或网页url
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 21:05:23 | 显示全部楼层
改成这样:
  1. req.find_all('div',class_=['pl2'])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-6-2 22:07:43 | 显示全部楼层
suchocolate 发表于 2020-6-2 20:49
发下代码或网页url
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import re

  4. def open_url(url):
  5.     hearders = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
  6.     res = requests.get(url,headers=hearders)
  7.     return res

  8. def find_depth(res):
  9.     pass

  10. def biaoti(res):
  11.     #电影名字
  12.     movies = []
  13.     req = BeautifulSoup(res.text,'html.parser')
  14.     name = req.find_all('div',class_=['p12'])
  15.     for each1 in name:
  16.         movies.append(each1.a.span.text)
  17.     print(movies)

  18.     #评分
  19.     ranks =[]
  20.     rank = req.find_all('span',class_="rating_nums")
  21.     for each2 in rank:
  22.         ranks.append(each2.text)
  23.     print(ranks)
  24.     #内容
  25.     messages =[]
  26.     message = req.find_all("p", class_="pl")
  27.     for each3 in message:
  28.         messages.append(each3.text)

  29.     result =[]
  30.     moveies_num = len(movies)
  31.     for i in range(moveies_num):
  32.         title = movies[i]+'->'+ranks[i]+'->'+messages[i]+'\n'
  33.         result.append(title)
  34.     print(result)
  35.     return result

  36. def main():
  37.     url = 'https://movie.douban.com/chart'
  38.     res = open_url(url)
  39.     nr = biaoti(res)
  40.     with open('豆瓣本周排行名单.txt','w') as f:
  41.         for a in nr:
  42.             f.write(nr)
  43.         
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 23:21:10 | 显示全部楼层
你爬不爬的出来我不知道,但是div的class是等于pl2不是p12。如果你刚学爬虫建议写一点运行一点,不要一股脑写完
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-3 07:16:10 | 显示全部楼层

你代码错了,3l的是['pl2'] 你的是p12
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-3 07:45:36 | 显示全部楼层    本楼为最佳答案   

你看3L 啊  被无视的赶脚有点不舒服  这样改就可以了

豆瓣有的时候爬到的名称 不是在 a.span里  有的就在a里要加个判断  看代码吧
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import re


  4. def open_url(url):
  5.     hearders = {
  6.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
  7.     res = requests.get(url, headers=hearders)
  8.     return res


  9. def find_depth(res):
  10.     pass


  11. def biaoti(res):
  12.     # 电影名字
  13.     movies = []
  14.     req = BeautifulSoup(res.text, 'html.parser')
  15.     name = req.find_all('div', class_=['pl2'])
  16.     for each1 in name:
  17.         if not (each1.a.span):
  18.             movies.append((each1.a.text).strip())
  19.             continue
  20.         movies.append(each1.a.span.text)
  21.     print(movies)

  22.     # 评分
  23.     ranks = []
  24.     rank = req.find_all('span', class_="rating_nums")
  25.     for each2 in rank:
  26.         ranks.append(each2.text)
  27.     print(ranks)
  28.     # 内容
  29.     messages = []
  30.     message = req.find_all("p", class_=['pl'])
  31.     for each3 in message:
  32.         messages.append(each3.text)

  33.     result = []
  34.     moveies_num = len(movies)
  35.     for i in range(moveies_num):
  36.         title = movies[i] + '->' + ranks[i] + '->' + messages[i] + '\n'
  37.         result.append(title)
  38.     print(result)
  39.     return result


  40. def main():
  41.     url = 'https://movie.douban.com/chart'
  42.     res = open_url(url)
  43.     nr = biaoti(res)
  44.     with open('豆瓣本周排行名单.txt','w',encoding='utf-8') as f:
  45.         for a in nr:
  46.             f.write(a+'\n')
  47. main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-3 12:41:28 | 显示全部楼层
Twilight6 发表于 2020-6-3 07:45
你看3L 啊  被无视的赶脚有点不舒服  这样改就可以了

豆瓣有的时候爬到的名称 不是在 a.span里  有的 ...

我没有无视的,我觉得我没有把问题说清楚,索性直接上代码了。感谢大佬的细心解释,我代码中的还有很多错误 也一并帮我修正了 。同时也感谢其他大佬对我的帮助
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-3 12:44:23 | 显示全部楼层
费小牛 发表于 2020-6-3 12:41
我没有无视的,我觉得我没有把问题说清楚,索性直接上代码了。感谢大佬的细心解释,我代码中的 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 04:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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