鱼C论坛

 找回密码
 立即注册
查看: 1180|回复: 3

[已解决]豆瓣爬虫求助!

[复制链接]
发表于 2020-8-1 20:46:26 | 显示全部楼层 |阅读模式

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

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

x
  1. import requests
  2. from bs4 import BeautifulSoup

  3. start=0
  4. result=[]
  5. header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}

  6. for i in range (0,1):
  7.     html=requests.get('https://movie.douban.com/top250?start='+str(start)+'&filter=',headers=header)
  8.    
  9.     html.encoding='utf-8'
  10.     start+=25
  11.     soup=BeautifulSoup(html.text,'html.parser')

  12.     for item in soup.find_all('div','info'):
  13.         title=item.div.a.span.string
  14.         yearline=item.find('div','bd').p.contents[2].string
  15.         yearline=yearline.replace('\n','')
  16.         yearline=yearline.replace(' ','')
  17.         year=yearline[0:4]
  18.         rating=item.find('span',{'class':'rating_num'}).get_text()

  19.         oneresult=[title,rating,year]
  20.         result.append(oneresult)
  21.         
  22. print(result)
  23.         
复制代码


上面是别人写的爬取豆瓣电影 Top 250(https://movie.douban.com/top250)的代码
我想要把它改成用来查询 豆瓣热门电视剧的标题和评分(https://movie.douban.com/tv/#!ty ... 20&page_start=0

  1. import requests
  2. from bs4 import BeautifulSoup

  3. start=0
  4. result=[]
  5. header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}

  6. for i in range (0,1):
  7.     html=requests.get('https://movie.douban.com/tv/#!type=tv&tag=%E6%97%A5%E5%89%A7&sort=time&page_limit=20&page_start='+str(start),headers=header)
  8.    
  9.     html.encoding='utf-8'
  10.     start+=20
  11.     soup=BeautifulSoup(html.text,'html.parser')

  12.     for item in soup.find_all('div','list-wp'):
  13.         '不知道怎么写
  14.         
  15.     oneresult=[title,rating,year]
  16.         result.append(oneresult)
  17.         
  18. print(result)
复制代码


但是卡在这里不知道该怎么写
最佳答案
2020-8-2 06:59:03
本帖最后由 1q23w31 于 2020-8-2 07:05 编辑
  1. import requests
  2. #from bs4 import BeautifulSoup   #不需要此第三方库,由于不解析网页
  3. '''页面生成受到js控制,故只加载页面得不出数据,改为直接解析数据'''
  4. page_start=0
  5. result=[]
  6. header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}
  7. for j in range(1,3):
  8.     html = requests.get('https://movie.douban.com/j/search_subjects?type=tv&tag=%E6%97%A5%E5%89%A7&sort=time&page_limit=20&page_start='+str(page_start),headers=header)
  9.     data = html.json()
  10.     for i in range (0,20):
  11.         #html.encoding='utf-8'

  12.         #soup=BeautifulSoup(html.text,'html.parser')

  13.         #for item in soup.find_all('div','list-wp'):
  14.             #print(item)
  15.         
  16.         #oneresult=[title,rating,year]
  17.         #result.append(oneresult)
  18.                   
  19.         #获取response数据
  20.         '''以上方法弃用'''
  21.         if data['subjects'][i]['rate'] == '':
  22.             data['subjects'][i]['rate'] = '暂无评分'
  23.         print(data['subjects'][i]['rate'],data['subjects'][i]['title'])
  24.     page_start+=20
  25. #print(result)
复制代码

代码已修改,看注释,不懂的再说
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-2 06:59:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 1q23w31 于 2020-8-2 07:05 编辑
  1. import requests
  2. #from bs4 import BeautifulSoup   #不需要此第三方库,由于不解析网页
  3. '''页面生成受到js控制,故只加载页面得不出数据,改为直接解析数据'''
  4. page_start=0
  5. result=[]
  6. header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}
  7. for j in range(1,3):
  8.     html = requests.get('https://movie.douban.com/j/search_subjects?type=tv&tag=%E6%97%A5%E5%89%A7&sort=time&page_limit=20&page_start='+str(page_start),headers=header)
  9.     data = html.json()
  10.     for i in range (0,20):
  11.         #html.encoding='utf-8'

  12.         #soup=BeautifulSoup(html.text,'html.parser')

  13.         #for item in soup.find_all('div','list-wp'):
  14.             #print(item)
  15.         
  16.         #oneresult=[title,rating,year]
  17.         #result.append(oneresult)
  18.                   
  19.         #获取response数据
  20.         '''以上方法弃用'''
  21.         if data['subjects'][i]['rate'] == '':
  22.             data['subjects'][i]['rate'] = '暂无评分'
  23.         print(data['subjects'][i]['rate'],data['subjects'][i]['title'])
  24.     page_start+=20
  25. #print(result)
复制代码

代码已修改,看注释,不懂的再说
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 15:32:42 | 显示全部楼层
1q23w31 发表于 2020-8-2 06:59
代码已修改,看注释,不懂的再说

谢谢你,原来用html读不到数据
要用json来获取数据
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 15:37:08 | 显示全部楼层
ashlike 发表于 2020-8-2 15:32
谢谢你,原来用html读不到数据
要用json来获取数据

https://movie.douban.com/j/search_subjectstype=tv&tag=%E6%97%A5%E5%89%A7&sort=time&page_limit=20&page_start=0
这个网址不是网页的地址,而是数据的地址,不是用json读取的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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