Python爬虫实战--爬取豆瓣电影和排名TOP250

299 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

 每天一小步,成功一大步。大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习每天小知识。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

 本文主要讲解使用Python爬虫实战爬取豆瓣电影和排名TOP250

所用到的库

requests库和beautifulsoup4库。

如果想要详细了解,欢迎点击传送门直达,这里就不在缀述。

入门Python爬虫--Requests库

入门Python爬虫--beautifulsoup4库

具体实现

主要思想:

  1. 获取需要解析的网页
  2. 解析网页
  3. 获取需要的标签和标签内容
  4. 将获取的内容保存到文件中
  5. 根据所需格式打印文件中的内容
 import bs4
 import requests
 from bs4 import BeautifulSoup
 ​
 //打印文件中的内容
 def print_movie_250():
     f = open("E:/1.txt")
     fm = "{0:^10}\t{1:{3}^25}\t{2:^10}"
     //中文按照中文字符占位chr(12288),避免排版紊乱
     print(fm.format("排名", "电影名称", "评分", chr(12288)))
     for line in f:
         l = line.split(",")
         print(fm.format(l[0], l[1], l[2], chr(12288)))
 ​
 //获取需要解析的url,然会response的text
 def getHTMLText(url):
     try:
     //设置header模拟真实用户
         r = requests.get(url, headers={"user-agent": "Mozilla/5.0"})
         r.raise_for_status()
         r.encoding = r.apparent_encoding
         return r.text
     except NameError:
         print(NameError)
 ​
 ​
 def parseHTMLText(html):
     soup = BeautifulSoup(html, "html.parser")
     titles = []
     ids = []
     scores = []
     //需要的内容都再ol中
     for li in soup.find("ol").children:
         em = li.find("em")//获取排名
         if isinstance(em, bs4.element.Tag):
             ids.append(em.string)
         span = li.find("span")
         if isinstance(span, bs4.element.Tag):
             titles.append(span.string)//获取电影名称
 ​
     score = soup.find_all("span", class_="rating_num")
     for s in score://获取电影评分
         scores.append(s.string)
     //写入文件
     f = open("E:/1.txt", "a")
     for i in range(25):
         f.write(ids[i]+","+titles[i]+","+scores[i]+"\n")
     f.close()
 ​
 ​
 def main():
 //获取前250名电影的url
     for i in range(10):
         url = "https://movie.douban.com/top250?start="
         page = i*25
         url = url + str(page) +"&filter="
         html = getHTMLText(url)
         parseHTMLText(html)
     print_movie_250()
 ​
 ​
 main()
 ​

结语

以上就是python爬虫的一个小实例,希望能对读者有所帮助。如有不正之处,欢迎掘友们批评指正。