php抓取网页title(本节使用Python爬虫抓取猫眼(电影网排行榜)影片信息)

优采云 发布时间: 2021-10-12 05:38

  php抓取网页title(本节使用Python爬虫抓取猫眼(电影网排行榜)影片信息)

  本节使用Python爬虫抓取猫眼电影TOP100榜单()电影信息,包括电影名称、上映时间、主演信息。

  在开始编写程序之前,首先确定页面类型(静态页面或动态页面),其次找出页面的url规则,最后通过分析网页元素的结构来确定正则表达式,从而提取网页信息。

  确定页面类型

  右击查看页面源码,判断页面中是否存在要抓取的数据。通过浏览可知,所有要抓取的信息都存在于源代码中,因此页面输入为静态页面。如下:

   <p class="name">

我不是药神

  

主演:徐峥,周一围,王传君

</p>

  发布时间:2018-07-05

  确定url规则

  确定url规则,需要多浏览几页,才能总结url规则,如下图:

  第一页:

  第二页:

  第三页:

  …

  第 n 页:(n-1)*10

  确定正则表达式

  通过分析网页元素的结构来确定正则表达式,如下图:

   <p class="name">我不是药神

  

主演:徐峥,周一围,王传君

</p>

  发布时间:2018-07-05

  使用 Chrome Developer Debugging Tools 确定要捕获的元素的结构。这样做的原因是可以避免正则表达式的冗余,提高编写正则表达式的速度。正则表达式如下:

  .*?title="(.*?)".*?class="star"&gt;(.*?).*?releasetime"&gt;(.*?)

  编写正则表达式时,使用(.*?)替换需要提取的信息,使用.*? 替换不需要的内容(包括元素标签)。

  编写爬虫

  下面用面向对象的方法写一个爬虫程序,主要写了四个函数,分别是请求函数、分析函数、数据保存函数、主函数。最后,如果你的时间不是很紧,想快速提高,最重要的是你不怕吃苦。我建议你可以定价@762459510。那真的很好。很多人都在快速进步。你需要害怕困难!可以去加进去看看~

  

1. from urllib import request

2. import re

3. import time

4. import random

5. import csv

6. from ua_info import ua_list

7. # 定义一个爬虫类

8. class MaoyanSpider(object):

9. # 初始化

10. # 定义初始页面url

11. def __init__(self):

12. self.url = &#39;https://maoyan.com/board/4?offset={}&#39;

13. # 请求函数

14. def get_html(self,url):

15. headers = {&#39;User-Agent&#39;:random.choice(ua_list)}

16. req = request.Request(url=url,headers=headers)

17. res = request.urlopen(req)

18. html = res.read().decode()

19. # 直接调用解析函数

20. self.parse_html(html)

21. # 解析函数

22. def parse_html(self,html):

23. # 正则表达式

24. re_bds = &#39;.*?title="(.*?)".*?<p class="star">(.*?)

25. .*?class="releasetime">(.*?)</p>&#39;

26. # 生成正则表达式对象

27. pattern = re.compile(re_bds,re.S)

28. # r_list: [(&#39;我不是药神&#39;,&#39;徐峥,周一围,王传君&#39;,&#39;2018-07-05&#39;),...] 列表元组

29. r_list = pattern.findall(html)

30. self.save_html(r_list)

31. # 保存数据函数,使用python内置csv模块

32. def save_html(self,r_list):

33. #生成文件对象

34. with open(&#39;maoyan.csv&#39;,&#39;a&#39;,newline=&#39;&#39;,encoding="utf-8") as f:

35. #生成csv操作对象

36. writer = csv.writer(f)

37. #整理数据

38. for r in r_list:

39. name = r[0].strip()

40. star = r[1].strip()[3:]

41. # 上映时间:2018-07-05

42. # 切片截取时间

43. time = r[2].strip()[5:15]

44. L = [name,star,time]

45. # 写入csv文件

46. writer.writerow(L)

47. print(name,time,star)

48. # 主函数

49. def run(self):

50. #抓取第一页数据

51. for offset in range(0,11,10):

52. url = self.url.format(offset)

53. self.get_html(url)

54. #生成1-2之间的浮点数

55. time.sleep(random.uniform(1,2))

56. # 以脚本方式启动

57. if __name__ == &#39;__main__&#39;:

58. #捕捉异常错误

59. try:

60. spider = MaoyanSpider()

61. spider.run()

62. except Exception as e:

63. print("错误:",e)

</p>

  输出结果:

  我不是药神 2018-07-05 徐峥、周以伟、王传君

  肖申克的救赎 1994-09-10 蒂姆·罗宾斯、摩根·弗里曼、鲍勃·冈顿

  绿皮书 2019-03-01 Vigo Mortensen, Mahsala Ali, Linda Cardrini

  海上钢琴家 2019-11-15 蒂姆·罗斯、比尔·纳恩、克兰伦斯·威廉姆斯三世

  小偷家族 2018-08-03 中川雅也、安藤樱、松冈墨鱼

  霸王别姬 1993-07-26 张国荣、张凤仪、巩俐

  哪吒魔童降临人间

  美丽人生 2020-01-03 罗伯托·贝尼尼、朱斯蒂诺·杜拉诺、塞尔吉奥·比尼·巴斯特里克

  这个杀手不太冷 1994-09-14 让·雷诺、加里·奥德曼、娜塔莉·波特曼

  2010-09-01 莱昂纳多·迪卡普里奥、渡边谦、约瑟夫·高登-莱维特

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线