学海AoA无涯 发表于 2020-8-11 23:46

新人Python,第一只爬虫,,我就只会re.findall,你咬我?

本帖最后由 学海AoA无涯 于 2020-8-15 10:54 编辑

来吾爱有几年了,这是我第一次发帖,还不会操作,看不顺眼的就将就看着(^_?)☆
(σ???)σ..:*☆哎哟不错哦
https://static.52pojie.cn/static/image/hrline/3.gif
学习了4-5天,觉得自己行了,就动手写了一个,能够跑起来,个人觉得(σ???)σ..:*☆哎哟不错哦
由于初学,就只会用findall查找关键字,我想这个新手应该是看得懂的
废话不多说,直接上代码
import requests
import re
import os

# 设置浏览器引擎
headers ={
    'User-Agent': 'Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
# 根据搜索,得到搜索结果网页
search = input('你想找怎样的女盆友 : ')
murl = 'https://www.tujigu.com/search/' + search
response = requests.get(murl, headers=headers)
HTML = response.content.decode('utf-8')
urls = re.findall('<a href="(.*?)" target="_blank"><img src=', HTML) # 获取全部图集的URL地址
picstotle = len(urls)
print('共搜到 {} 个图集,由于网站原因,最多只能搜索到20个'.format(picstotle))

# 从全部图集URL中,找出单个图集的URL进行分析
for url in urls:
    response = requests.get(url, headers=headers)
    HTML = response.content.decode('utf-8')
    picsname = re.findall('<title>(.*?)</title>', HTML) # 图集的名称
    picmax = int(re.findall('<p>图片数量: (.*?)P</p>', HTML)) # 获取总的图片数量
    ID = url.split("/") #获取图集的ID,方便进行图片URL的拼接
    path = '图集谷\\' + picsname

# 创建图集目录
    if not os.path.exists(path):
      os.makedirs(path)
      print('目录创建完成!,记得设置为隐私文件哦')
    else:
      print('目录已创建!!,一看就是老绅士了 ')
# 开始下载图集
    print(picsname)
    print('开始下载嗷~~~')
    for i in range(1, picmax):
      picurl = 'https://lns.hywly.com/a/1/' + ID +'/' + str(i) + '.jpg'
      print('(≧^.^≦)喵~~~正在下载:' + picurl + '')
      res = requests.get(picurl).content
      with open('%s\%s.jpg'%(path, i), 'wb') as f:
            f.write(res)
    print(picsname + '\n下载完成!\n\n')

学海AoA无涯 发表于 2020-8-12 23:36

砺心缘起 发表于 2020-8-12 19:12
能请问一下,大佬在哪里入门的吗?能指点一下!好少走点弯路!先说声谢谢了!

最开始看过觅风的易语言(全中文),,算是在这里入门的,,但是觉得易语言不被认可,看了20+集,大体知道了基础的编程理念,,之后因为学习,没有怎么碰电脑了,,

高考完了,想学学Python,,,,教程推荐小甲鱼的Python教程视频,感觉他讲的很风趣,骚话不断,也买了小甲鱼的书(第一版的),看到了第四章,,就在吾爱,CSDN,,看了些别人的爬虫,复制下来运行有时会出错,看错误提示找解决方法,,发现简单的爬虫就只到了requests和re库,,然后自己模仿着写了一下,能够运行:Dweeqw:Dweeqw
小甲鱼在14章才讲爬虫,,至于为什么跳过几章,直接到爬虫,,,都是绅士,就不解释了

要是0基础学编程,建议先从易语言开始吧,,编程的总体概念其实都一样,,就是不同语言有自己独特的地方罢了

五月何欢 发表于 2020-8-12 12:48

tem的 这是四天的成果?我七天只知道变量是啥玩意

no-problem 发表于 2020-8-12 09:13

越看越牛b
   整那么多花里胡哨的都不看一下的么

关山月明 发表于 2020-8-12 11:23

正则虽然效率高,看着确实难受,楼主可以试试xpath,简单易学,解析效率还挺高

龙舌兰 发表于 2020-8-12 11:25

这是啥?刚入门看不懂

学海AoA无涯 发表于 2020-8-12 12:34

关山月明 发表于 2020-8-12 11:23
正则虽然效率高,看着确实难受,楼主可以试试xpath,简单易学,解析效率还挺高

慢慢学,不着急:Dweeqw

学海AoA无涯 发表于 2020-8-12 12:36

no-problem 发表于 2020-8-12 09:13
越看越牛b
   整那么多花里胡哨的都不看一下的么

我不知道有些颜文字符号显示不出来:'(weeqw:'(weeqw

fanvalen 发表于 2020-8-12 12:55

我也写过这网站的py当时没写这么复杂
就是req和re库 提取一下网页的数字,和有多少张图片,直接遍历就完了
import requests
import re



hd={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}


#输入主网页
murl="https://www.tujigu.com/a/34686/"

nb=re.findall(r"https://www.tujigu.com/a/(.*?)/",string=murl)

data=requests.get(murl,headers=hd,timeout=30)
data.encoding="utf-8"
#总页数
pat=r"<p>图片数量: (.*?)P</p>"
p=re.findall(pattern=pat,string=data.text)



#下载所有图片
for i in range(int(p)+1):
    try:
      imgurl="https://lns.hywly.com/a/1/"+str(nb)+"/"+str(i)+".jpg"
      img=requests.get(imgurl,headers=hd,timeout=60)
      #写入d盘
      with open("d:\\"+str(nb)+"-"+str(i)+".jpg","wb")as f:
            f.write(img.content)
            f.close()
            print("下载第"+str(i))
    except:
      i=i-1

学海AoA无涯 发表于 2020-8-12 13:18

fanvalen 发表于 2020-8-12 12:55
我也写过这网站的py当时没写这么复杂
就是req和re库 提取一下网页的数字,和有多少张图片,直接遍历就完 ...

您这个只是下载一个图集的图片嘛???我昨晚又改了一下,可以按照他的分类下载,还有自动翻页,写完我就跑着中国,睡觉了,今早一看下了30+页,似乎速度有点慢

tea456 发表于 2020-8-12 13:43

爬虫是搜索引擎的基本原理
页: [1] 2 3 4
查看完整版本: 新人Python,第一只爬虫,,我就只会re.findall,你咬我?