技术无罪or技术原罪?爬图小心查水表

2020-09-15 12:39:02 浏览数 (1)

爬虫到底违法不违法?做成啥样才违法?

爬了好多违禁图片,不知道会不会被查水表

但是对于入门来说,够用了

该网站是论坛结构,没有登录,反爬也基本没有,爬下来的东西也很实用,入门就从他开始吧(没有网址)

基本思路很简单,从源文件中找到网站结构,在需要的地方进入,之后开始爬图片。

据说beautifulsoup之类的库比正则化好用,以后尽量尝试吧

代码语言:javascript复制
由于第一页的结构和后续页不同,所以现在写的也只是特定条件下的情况,无法通用

import json
import re
import requests
from requests import RequestException
import pandas as pd
urlall='http//*****/'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}##以上这些都是必须的

for i in range(2,6):#爬取第二页到第五页的图
    urlpage='http//*****/page={}'.format(i)#具体页数,无法通用的地方就是这
    response1 = requests.get(urlpage,headers=headers)#
    html1 = response1.text
    pattern1 = re.compile('</td>.*?<span id=.*?<a.*?href="(.*?)".*?>', re.S)#解析具体的帖子
    items1 = re.findall(pattern1, html1)
    aa1=pd.DataFrame({'linkname':items1})
    aa1["new"] =[ 'http//*****/{}'.format(ii) for ii in aa1["linkname"]]
    aa1=aa1.drop(['linkname'],axis=1)
    aa1=aa1.values.tolist()##将地址和帖子的路径结合在一起
    for j in range(len(aa1)):
        response2=requests.get(aa1[j][-1],headers=headers)#去掉【】
        html2 = response2.text
        pattern2 = re.compile('<img.*?file="(.*?)".*?>', re.S)#找图
        items2 = re.findall(pattern2, html2)
        if len(items2)!=0:#判断如果没有图就跳过,我在想如果这个判断能在找图的地方判断是不是能快些
          for k in range(len(items2)):
            u=urlall items2[k]
            response3 = requests.get(u,headers=headers)
            response3.text  
            open('d:/data/new/{}'.format(items2[k][12:]),'wb').write(response3.content)
现在就怕爬太多会不会被反扒,其他人提到的休眠我并没有加入,,,哪天爬的量大,是不是就要加休眠了

不怎么习惯写函数式的代码结构,我还是习惯于脚本式。自己看着开心就好

0 人点赞