fa00x 发表于 2022-6-5 19:10

python 妹子图下载问题

本帖最后由 fa00x 于 2022-6-8 21:22 编辑


import requests

from lxml import etree

headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'
}


for i in range(2800,3482):#1951,5482
    for j in range(1,40):
      url1 = f'https://www.2meinv.com/article-{i}-{j}.html'
      res = requests.get(url=url1, headers=headers)
      tree = etree.HTML(res.text)
      img_url = tree.xpath('/html/body/div/a/img/@src')
      #print(img_url)
      url3 = requests.get(url = img_url)
      img_name = img_url.split("/")[-1]
      s = 'G:/pych2/pic33'
      with open(s + "\\" + img_name, "wb") as f:
            f.write(url3.content)
      print(img_name)

已更新 剩下兄弟们看你们自己的了
下载心得 一段时间就会屏蔽无法下载。多线程屏蔽时间更快。估计是服务器后台有监控。单线程。timeout自己设置一下。

曦月 发表于 2022-6-5 19:31

看到这个网站好熟悉{:301_997:}

fa00x 发表于 2022-6-5 20:00

曦月 发表于 2022-6-5 19:31
看到这个网站好熟悉

大佬别看了。来个解决方案{:1_893:}

Harold123 发表于 2022-6-5 21:09

本帖最后由 Harold123 于 2022-6-5 21:11 编辑

你的img_url是个列表类型,在xpath那行后面加个就好了
img_url = tree.xpath('/html/body/div/a/img/@src')

doudouxiao 发表于 2022-6-5 22:06

支持一下,改天研究一下

曦月 发表于 2022-6-5 22:45

fa00x 发表于 2022-6-5 20:00
大佬别看了。来个解决方案

我说一下我写的思路,就是先遍历主题链接,再依次访问,访问主题链接后,再遍历取出里面的每一个图片链接,你是想直接下载,可以直接在取链接的时候就下载图片

小小邮差 发表于 2022-6-5 23:07

这种第一时间直接搜这个库的就可以解决了

szxizhijiang 发表于 2022-6-5 23:50

num = re.findall('...</a> <a href=".*?">(.*)</a>',num_data)[0]
这样可以取到每一个套图的具体数量,防止 下载不全啊,有的套图数量超过40,你的代码就取不到了

zhcgreat 发表于 2022-6-6 01:00

不清楚楼主是否是必须用request.urlretrieve,如果必须用的话那就别继续看我的回答了,纯浪费时间,如果不是我这几天自学的时候看到一个类似的代码,改了改你看能用不,
import requests, bs4, os

os.makedirs('images', exist_ok=True)

headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'
}

for i in range(1951,5482):
    url = f'https://www.2meinv.com/article-{i}.html'
    for j in range(1,40):
      url1 = f'https://www.2meinv.com/article-{i}-{j}.html'
      res = requests.get(url=url1, headers=headers)
      soup = bs4.BeautifulSoup(res.text)
      comicElem = soup.findAll('img')
      comicElem = comicElem
      comicUrl = comicElem['src']
      
      res = requests.get(comicUrl)
      res.raise_for_status()
      
      imageFile = open(os.path.join('images', os.path.basename(comicUrl)), 'wb')
      for chunk in res.iter_content(100000):
            imageFile.write(chunk)
      imageFile.close()

嫌慢的话可以看看多线程
原代码来源为《编程快速上手_让繁琐工作自动》

suhaoyue 发表于 2022-6-6 06:27

支持友友,早日修复问题
页: [1] 2 3
查看完整版本: python 妹子图下载问题