Python爬虫实战(一):爬取豆瓣电影top250排名

举报
悦来客栈的老板 发表于 2020/12/29 00:29:42 2020/12/29
【摘要】 先上代码 #coding=utf-8import reimport urllib.request def getHtml(url): page = urllib.request.urlopen(url) html = page.read() html = html.decode('utf-8') return html def getItem(html): reg...

先上代码



  
  1. #coding=utf-8
  2. import re
  3. import urllib.request
  4. def getHtml(url):
  5. page = urllib.request.urlopen(url)
  6. html = page.read()
  7. html = html.decode('utf-8')
  8. return html
  9. def getItem(html):
  10. reg = re.compile(r'.*?<span class="title">(.*?)</span>.*?<p class="">.*?(\d+).*?</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(\d+)人评价',re.S)
  11. items = re.findall(reg,html)
  12. global index
  13. for index,item in enumerate(items,index+1):
  14. print (index,item)
  15. if __name__=='__main__':
  16. index = 0
  17. for i in range(0,226,25):
  18. url = "https://movie.douban.com/top250?start="
  19. url += str(i) + "&filter="
  20. html = getHtml(url)
  21. getItem(html)
  22. print ("\nOK!All OVER!")


#关于正则表达式的一些说明
#<span class="title">(.*?)</span>  获取电影名字
#<p class="">.*?(\d+) 获取电影上映年份
#<span class="rating_num" property="v:average">(.*?)</span> 获取评分
#</span>.*?<span>(\d+)人评价  获取评价人数   


如果想要代码看起来更优雅点,可以去掉

global index

index = 0

再将  index+1 改成1,只是不能按顺序统计了。



  
  1. #coding=utf-8
  2. import re
  3. import urllib.request
  4. def getHtml(url):
  5. page = urllib.request.urlopen(url)
  6. html = page.read()
  7. html = html.decode('utf-8')
  8. return html
  9. def getItem(html):
  10. reg = re.compile(r'.*?<span class="title">(.*?)</span>.*?<p class="">.*?(\d+).*?</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(\d+)人评价',re.S)
  11. items = re.findall(reg,html)
  12. for index,item in enumerate(items,1):
  13. print (index,item)
  14. if __name__=='__main__':
  15. for i in range(0,226,25):
  16. url = "https://movie.douban.com/top250?start="
  17. url += str(i) + "&filter="
  18. html = getHtml(url)
  19. getItem(html)
  20. print ("\nOK!All OVER!")




  
  1. #coding=utf-8
  2. import re
  3. import requests
  4. from prettytable import PrettyTable
  5. from colorama import init,Fore
  6. def getHtml(url):
  7. page = requests.get(url)
  8. html = page.text
  9. return html
  10. def getItem(html):
  11. reg = re.compile(r'.*?<span class="title">(.*?)</span>.*?<p class="">.*?(\d+).*?</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(\d+)人评价',re.S)
  12. items = re.findall(reg,html)
  13. return items
  14. if __name__=='__main__':
  15. movie = []
  16. init(autoreset=True)
  17. table = PrettyTable([Fore.RED +"排名", "电影名",'上映年份','综合评分','评价人数'])
  18. for i in range(0,226,25):
  19. url = "https://movie.douban.com/top250?start="
  20. url += str(i) + "&filter="
  21. html = getHtml(url)
  22. items = getItem(html)
  23. for item in items:
  24. movie.append(item)
  25. for index,item in enumerate(movie,1):
  26. if index % 4 == 0:
  27. color = Fore.RED
  28. elif index % 4 == 1:
  29. color = Fore.YELLOW
  30. elif index % 4 == 2:
  31. color = Fore.GREEN
  32. else:
  33. color = Fore.CYAN
  34. table.add_row([color + str(index),item[0],item[1],item[2],item[3]])
  35. print (table)


文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/77836194

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。