python 爬虫电影天堂简单示例

前   言

1. 爬虫简介

  在一些实际项目操作过程中,可能会经常遇到爬虫的需求,然后将获得的数据进行处理或写入数据库。

  爬虫业务中经常设计到几个开源库,requests,bs4,pandas,pymysql

  requests是用来根据url获取相关的网页信息;

  bs4主要是用来进行网页的解析;

  pandas用来处理一些数据;

  pymysql主要用来操作数据库,将必要的数据存入到目标数据库。

2. 爬虫简单示例 

  本次demo主要是以大家常用来下载电影的 电影天堂 网站来简单地实操一下爬虫业务,目的:获取电影天堂中 2022新片精品 中前7页的电影网址和名称。

  

  2.1 确定相关的url

    我们在点击了更多这个按钮,并随便点击了第2页和第1页,发现他们的url除了页码不一样,其他部分都是一样的,如下:

    https://m.dytt8.net/html/gndy/dyzz/list_23_1.html  即.html 前面的数字代表当前的页数。所以我们每一页的url可以为

    URL = "https://m.dytt8.net/html/gndy/dyzz/list_23_{}.html" ,然后通过format函数和for循环遍历每一页。

  2.2 代码编写   

  import requests
  from bs4 import BeautifulSoup

  URL = "https://m.dytt8.net/html/gndy/dyzz/list_23_{}.html"
  BASE_URL = "https://m.dytt8.net/"


  def get_movie(url):
  response = requests.get(url)
  # print(response.headers)
  # print(response.content)
  text = response.content.decode("gbk")
  return text


  def parser_movie(text):
  parser_after = BeautifulSoup(text, "html.parser")
  return parser_after


  def find_movie(target_movie):
  movie = target_movie.find("div", class_="co_content8")
  back_movie = movie.find_all("a", class_="ulink")
  for each in back_movie:
  each_movie_url = each.get("href")
  each_movie_name = each.text
  print(BASE_URL + each_movie_url, each_movie_name)


  if __name__ == "__main__":
  for i in range(1, 8):
  movie_final = get_movie(URL.format(i))
  parser_final = parser_movie(movie_final)
  find_movie_final = find_movie(parser_final)
  print("this is white line...........................................")

  1. get_movie函数主要是用来获取最原始未经处理的html数据,这里我们可以通过print(response.content)来获取header格式,如下图所示:

 

   可以知道,是gpk加解密的格式,那么我们可以通过 text = response.content.decode("gbk") 来解密原生的html数据,可以避免乱码的出现。

  2. 在拿到解密后的html数据后,可以通过bs4中的BeautifulSoup模块来解析html text格式的数据并以html的标准格式存在,即类似于网站页面,通过

  开发工具进取的原始div等页面格式,方便浏览数据的层次和格式并获取需要的数据。

  3. 拿到类似开发工具页面的html数据后,就可以通过find或者find_all来获取某一个层级的内容了。在这里我们想要获取每一个电影的url以及名称,通过

  对页面的分析,发现它可以在"div", class_="co_content8" 下面 "a", class_="ulink"找到,通过get函数获取url,通过text属性获取文字。

   2.3 运行主代码,获取最终结果

   运行主程序,获取最终的结果如下图所示:

  

 

 结  语

   未完待续......

posted @   新能源阿布  阅读(1211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示