当前位置:   article > 正文

python爬虫-使用多进程爬取美图-人工智能语言(高效爬虫)_爬虫和人工智能语言

爬虫和人工智能语言
  1. import os
  2. from multiprocessing.pool import Pool
  3. from urllib.parse import urlencode
  4. from hashlib import md5
  5. import requests
  6. def loaDpage(fullurl):
  7. """
  8. 负责发请求获取图片url
  9. :return:
  10. """
  11. headers = {
  12. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
  13. }
  14. response = requests.get(fullurl, headers=headers)
  15. jsonFile = response.json() # 该方法返回json格式文件
  16. 这里可以把获取到的json文件写入本地,便于接下来解析
  17. with codecs.open('jiepai1.json', 'wb', encoding='utf-8') as f:
  18. source = json.dumps(response.json(), ensure_ascii=False) + '\n'
  19. f.write(source)
  20. parsePage(jsonFile)
  21. def parsePage(jsonFile):
  22. if jsonFile.get('data'):
  23. # 先获取data数据,
  24. data = jsonFile.get('data')
  25. for i in data:
  26. # 分析发现data是一个列表,列表里嵌套了字典
  27. if i.get('image_list'):
  28. # 获取每一条图片url数据
  29. for url in i.get('image_list'):
  30. # 这里获取到的url中有的不是我们需要的美图,进行过滤
  31. if type(url) == dict:
  32. # 这里拿到的url只是缩略图的url,我们进行替换以及url的拼接
  33. new_url = 'http:' + url.get('url').replace('list', 'large')
  34. writePage(new_url)
  35. def writePage(new_url):
  36. """
  37. 负责写入本地文件
  38. :return:
  39. """
  40. headers = {
  41. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
  42. }
  43. # 请求每一张图片
  44. response = requests.get(new_url, headers=headers)
  45. data = response.content # content方法得到二进制图片文件
  46. fileName = md5(data).hexdigest() + '.jpg' # 使用md5并且对图片进行命名
  47. with open(fileName, 'wb') as f:
  48. f.write(data)
  49. # def spiderMeinv(beginPage, endPage):
  50. def spiderMeinv(offset):
  51. """
  52. 调度执行
  53. :return:
  54. """
  55. # 这里使用抓包工具把ajax请求的参数列举出来便于大家分析
  56. # # offset=60
  57. # &format=json&
  58. # keyword=%E8%A1%97%E6%8B%8D%E7%BE%8E%E5%A5%B3&
  59. # autoload=true&
  60. # count=20
  61. # &cur_tab=1&
  62. # from=search_tab
  63. data = {
  64. 'offset': offset,
  65. 'format': 'json',
  66. 'keyword': '街拍美女',
  67. 'autoload': 'true',
  68. 'count': '20',
  69. 'cur_tab': '1',
  70. 'from': 'search_tab'
  71. }
  72. url = 'https://www.toutiao.com/search_content/?'
  73. datas = urlencode(data)
  74. fullurl = url + datas
  75. loaDpage(fullurl)
  76. if __name__ == '__main__':
  77. # 接收用户输入
  78. beginPage = int(input('输入起始页:'))
  79. endPage = int(input('输入结束页:'))
  80. # 准备基础数据
  81. url = 'https://www.toutiao.com/search_content/?'
  82. headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
  83. }
  84. # 创建文件夹存放美图,切换工作目录
  85. if not os.path.exists('jiepai'):
  86. os.mkdir('jiepai')
  87. os.chdir('jiepai')
  88. groups = [x * 20 for x in range(beginPage, endPage + 1)]
  89. pool = Pool(5)
  90. # 这里pool.map的两个参数分别是要执行的函数名和一个可迭代对象,表示把可迭代对象中的所有的值一作为参数依次传入函数中
  91. pool.map(spiderMeinv, groups)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/344023
推荐阅读
相关标签
  

闽ICP备14008679号