鱼C论坛

 找回密码
 立即注册
查看: 1202|回复: 1

[已解决]爬虫

[复制链接]
发表于 2021-7-19 12:14:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本来想跟着小甲鱼的课程爬点妹子图的,但是突然发现了下面的问题,不知道咋搞。

在小甲鱼打开的网页里面,每个网页的网址是这样的:jandan.net/ooxx/page-1292#comments.
不同网页间除了页码,其他都是一样的

但是在我打开的网页里面,每个网页的网址是这样的:http://jandan.net/girl/MjAyMTA3MTktODc=#comments.
不是按照页码弄的,我搞不清楚其中的规律是什么

请教下各位大佬,这是啥情况,该怎么解决呢
最佳答案
2021-7-20 14:22:28
jiandan的url改过了,所以看起来不一样了。
girl后面的“乱码”可以算出来,也可以直接从当前页面获得下一个页面的url。
你可以参考这个:
  1. # _*_ coding: utf-8 _*_
  2. # Developer: suchocolate
  3. # Date: 8/26/2020 15:09
  4. # File name: jiandan.py
  5. # Development tool: PyCharm

  6. import requests
  7. import os
  8. import re


  9. def main():
  10.     dir_name = 'pics'   # 存储图片
  11.     if not os.path.exists(dir_name):
  12.         os.mkdir(dir_name)
  13.     os.chdir(dir_name)
  14.     # num = int(input('请输入想下载的页数:'))
  15.     num = 3
  16.     url = 'http://jandan.net/girl'
  17.     headers = {'user-agent': 'firefox'}
  18.     result = []   # 存储图片的url
  19.     r = requests.get(url, headers=headers)
  20.     nx_page = re.findall(r'Comments" href="(.*?)"', r.text)[0]   # 找到下一页的url
  21.     for item in range(num):
  22.         r = requests.get('http:' + nx_page, headers=headers)
  23.         result.extend(re.findall(r'<img src="(.*?)"', r.text))   # 把当前页面图片的url存到result
  24.         nx_page = re.findall(r'Comments" href="(.*?)"', r.text)[0]  # 找到下一页的url
  25.     pic_num = len(result)
  26.     print(f'总共{pic_num}张图片')
  27.     dl_counter = 1
  28.     for item in result:
  29.         pic_name = item.split('/')[-1]
  30.         try:
  31.             r = requests.get('http:' + item, headers=headers, timeout=5)
  32.         except Exception as e:
  33.             print(e)
  34.         with open(pic_name, 'wb') as f:
  35.             f.write(r.content)
  36.             print(f'已下载{pic_name}, 共下载{dl_counter}。')
  37.             dl_counter += 1


  38. if __name__ == '__main__':
  39.     main()

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-20 14:22:28 | 显示全部楼层    本楼为最佳答案   
jiandan的url改过了,所以看起来不一样了。
girl后面的“乱码”可以算出来,也可以直接从当前页面获得下一个页面的url。
你可以参考这个:
  1. # _*_ coding: utf-8 _*_
  2. # Developer: suchocolate
  3. # Date: 8/26/2020 15:09
  4. # File name: jiandan.py
  5. # Development tool: PyCharm

  6. import requests
  7. import os
  8. import re


  9. def main():
  10.     dir_name = 'pics'   # 存储图片
  11.     if not os.path.exists(dir_name):
  12.         os.mkdir(dir_name)
  13.     os.chdir(dir_name)
  14.     # num = int(input('请输入想下载的页数:'))
  15.     num = 3
  16.     url = 'http://jandan.net/girl'
  17.     headers = {'user-agent': 'firefox'}
  18.     result = []   # 存储图片的url
  19.     r = requests.get(url, headers=headers)
  20.     nx_page = re.findall(r'Comments" href="(.*?)"', r.text)[0]   # 找到下一页的url
  21.     for item in range(num):
  22.         r = requests.get('http:' + nx_page, headers=headers)
  23.         result.extend(re.findall(r'<img src="(.*?)"', r.text))   # 把当前页面图片的url存到result
  24.         nx_page = re.findall(r'Comments" href="(.*?)"', r.text)[0]  # 找到下一页的url
  25.     pic_num = len(result)
  26.     print(f'总共{pic_num}张图片')
  27.     dl_counter = 1
  28.     for item in result:
  29.         pic_name = item.split('/')[-1]
  30.         try:
  31.             r = requests.get('http:' + item, headers=headers, timeout=5)
  32.         except Exception as e:
  33.             print(e)
  34.         with open(pic_name, 'wb') as f:
  35.             f.write(r.content)
  36.             print(f'已下载{pic_name}, 共下载{dl_counter}。')
  37.             dl_counter += 1


  38. if __name__ == '__main__':
  39.     main()

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 14:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表