爬虫到底违法不违法?做成啥样才违法?
爬了好多违禁图片,不知道会不会被查水表
但是对于入门来说,够用了
该网站是论坛结构,没有登录,反爬也基本没有,爬下来的东西也很实用,入门就从他开始吧(没有网址)
基本思路很简单,从源文件中找到网站结构,在需要的地方进入,之后开始爬图片。
据说beautifulsoup之类的库比正则化好用,以后尽量尝试吧
由于第一页的结构和后续页不同,所以现在写的也只是特定条件下的情况,无法通用
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)
现在就怕爬太多会不会被反扒,其他人提到的休眠我并没有加入,,,哪天爬的量大,是不是就要加休眠了
不怎么习惯写函数式的代码结构,我还是习惯于脚本式。自己看着开心就好