文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

05_多协程爬取斗鱼高颜值美女图片-2.

2023-01-30 23:35

关注
 1 import requests
 2 import re
 3 # from bs4 import BeautifulSoup
 4 from urllib import request
 5 # import threading
 6 import gevent
 7 from gevent import monkey
 8 
 9 monkey.patch_all()
10 
11 def get_html_text(url):
12     try:
13         hd = {'User-Agent':'Mozilla/5.0'} #添加伪装浏览器头部信息
14         r = requests.get(url, timeout=10, headers = hd)
15         r.raise_for_status()
16         r.encoding = r.apparent_encoding
17         print(len(r.text))
18         return r.text
19     except Exception as result:
20         print('错误类型:', result)
21 
22 
23 def html_text_parser(img_list, html):
24 
25 # 下面是修改的重点部分,采用了正则表达式,没有采用bs4
26 # 技术大神可以研究一下斗鱼这个网页的源代码,真正的图片信息都存储在后面,不是传统的# # html,我还没怎么接触过前端的知识,不知怎么使用bs4,所以使用了正则表达式。
27     
28     img_pat = r'"rs\w+":"(.*?g)"'  
29     links = re.compile(img_pat, re.S).findall(html)
30     print(len(links))
31     print(links)
32     for link in links:
33         if link:
34             img_list.append(link)
35     return img_list
36 
37 
38 
39 
40 def get_douyu_img(Img_list):
41     for i,j in enumerate(Img_list):
42         # name = j.split('.')[-1]
43         try: #异常捕获,如果链接不能访问,退出当前一次循环,进入下一次循环
44             r = request.urlopen(j)
45             ima_content = r.read()
46             path = str(i)
47             with open(path, 'wb') as f:
48                 f.write(ima_content)
49         except:
50             continue
51 def main():
52     url = 'https://www.douyu.com/g_yz'
53     html = get_html_text(url)
54     img_list = list()
55     Img_list = html_text_parser(img_list, html)
56     # print(Img_list)
57     #t1 = threading.Thread(target=get_html_text, args=(url,))
58     #t2 = threading.Thread(target=html_text_parser, args=(img_list,html))
59     #t3 = threading.Thread(target=get_douyu_img, args=(Img_list,))
60     #t1.start()
61     #t2.start()
62     #t3.start()
63     gevent.joinall([
64         gevent.spawn(get_html_text, url),
65         gevent.spawn(html_text_parser, img_list, html),
66         gevent.spawn(get_douyu_img, Img_list)
67     ])
68 
69 
70 if __name__ == '__main__':
71     main()

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯