爬虫大佬可以进来瞧瞧 帮忙小弟 顺便给自己巩固一下
图片url已经被我获得了使用遍历进行文件保存时候 访问图片url 返回的是404
第一次遇见这样的
我以为代码敲错了
所以我就使用断点测试发现返回404了
如图1所示
目标网站:http://zhainanba.net/category/zhainanfuli/jinrimeizi
下面是代码:
import os,requests
from lxml import etree
count = 1
url = "http://zhainanba.net/category/zhainanfuli/jinrimeizi"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
}
response = requests.get(url=url,headers=headers)
response.encoding = "utf-8"
html = response.text
tree = etree.HTML(html)
url = tree.xpath('//article[@class="excerpt excerpt-one"]')
list2 = []
for li in url:
url_list = li.xpath('./p/a/@href')
list2.append(url_list)
print("url采集完毕!")
list3 = []
for each in list2:
response = requests.get(url=each,headers=headers)
response.encoding = "utf-8"
html = response.text
tree = etree.HTML(html)
imgs = tree.xpath('//article[@class="article-content"]/p/img/@src')
list3.append(imgs)
print("正在采集图片中……")
print("采集完毕!")
if not os.path.exists('./test'):
os.mkdir('./test')
Connection = {
"Connection": "keep-alive"
}
Server = {
"Server": "nginx/1.7.7"
}
for src in list3:
#请求到了图片的二进制数据
img_data = requests.get(url=src,headers=headers).content
img_name = str(count) + ".jpg"#
count = int(count)#
count += 1#
imgPath = "./test/" + img_name
with open(imgPath,"wb") as fp:
fp.write(img_data)
print(img_name + '下载成功!')
在网站时候可以正常请求图片 但是你只要刷新一下马上404送给我 = =
大佬们 一共只有7个币 最多给你们6个 还有一个交税了救救me! 本帖最后由 Stubborn 于 2020-4-24 00:06 编辑
好可爱的妹子啊{:10_258:} ,测试10张没有问题,速度好慢,不得行,得加代理池用Scrapy取搞
这里额外说一句,
for m in D:
session.headers["Referer"] = data
关于跟新headers的Referer,还是重新用一个headers用于新的请求,有代测试,这里就爬了一个连接,不测试了
# -*- coding: utf-8 -*-
# !/usr/bin/python3
"""
@ version: ??
@ author: Alex
@ file: test
@datetime: 2020/4/23 - 23:30
@explain:
"""
import requests
import re
import os
session = requests.session()
domain = "http://zhainanba.net"
params = {
'Accept': 'text/html, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Host': 'zhainanba.net',
'Pragma': 'no-cache',
'Referer': 'http://zhainanba.net/category/zhainanfuli/jinrimeizi',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
data = []
for page in range(1, 5):
url = f"http://zhainanba.net/category/zhainanfuli/jinrimeizi/page/{page}"
resp = session.get(url, params=params)
data += re.findall(r"http://zhainanba\.net/\d+\.html", resp.text)
param = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36',
}
# for urls in data:
resp = session.get(data)
D = re.findall("https://ac\.meijiecao\.net/ac/img/znb/meizitu/.*?\.jpg", resp.text)
for m in D:
session.headers["Referer"] = data
resp = session.get(m)
*_, path_, name = m.split("/")
file_path = os.path.abspath(path_)
img_path = os.path.join(file_path, name)
if not os.path.exists(file_path):
os.mkdir(file_path)
with open(img_path, "wb") as f:
f.write(resp.content) 加代理换ip地址,或者每个请求之间加2-3秒的延时,而且你写的headers参数的server和connection也没加入到headers, - 404一般不会是反爬,如果封ip,cookie之类的都是500这一类的
- 我一般从页面节点中解析出来的url都需要与网站域名进行拼接
- 你应该把你在请求图片url之前把你的url打印出来看看,复制到浏览器中看看能不能打开
- 如果上面我说的没有问题,就需要你把最后说的什么一刷新就404的问题描述清楚 小小小菜菜菜 发表于 2020-4-23 07:34
加代理换ip地址,或者每个请求之间加2-3秒的延时,而且你写的headers参数的server和connection也没加入到he ...
这个地方可能是 会计的会怎么念 发表于 2020-4-23 10:22
- 404一般不会是反爬,如果封ip,cookie之类的都是500这一类的
- 我一般从页面节点中解析出来的url都需要 ...
我晚点试试 会计的会怎么念 发表于 2020-4-23 10:22
- 404一般不会是反爬,如果封ip,cookie之类的都是500这一类的
- 我一般从页面节点中解析出来的url都需要 ...
url打印出来看看,复制到浏览器中打不开的 会报404 要不试试在headers那里多添加一些东西,有些网站只有useragent是爬不了的,比如cookie什么的还是去踩踩点吧 兔子BUNNY 发表于 2020-4-23 16:13
要不试试在headers那里多添加一些东西,有些网站只有useragent是爬不了的,比如cookie什么的还是去踩踩点吧
网站我发上面了要不你看看 97766819 发表于 2020-4-23 15:51
url打印出来看看,复制到浏览器中打不开的 会报404
按照我的经验,404不是他们说的这几个反爬的问题,加不加headers,ip,cookie都不是。
- 你既然打印出来的url就不能用,看看是为什么?
- 你是没有和网站域名拼接?
- 还是和在站点中打开的url有不同?
- 自己观察发现url中的规律是爬虫的基本功
- 如果是反爬,也是url加密或者映射反爬,你现在根本解决不了 关于反爬虫的问题,我有几点想说的
1. 我经常回复求助帖,只要是涉及爬虫的,张嘴就是,你加个headers,我从学爬虫到现在,headers里只改user—agent,其他从来没改过
2. 封ip返回的不会是404一般是500这一类的,但是返回的状态码,一定要具体问题具体分析
3. 需要添加cookie的,是需要登陆的网站,因为html无状态,登录信息是需要cookie传递。封cookie换个说法,叫封账号。
- 最后推荐一个视频课程,里面有讲前端基础。
python爬虫_从入门到精通(基础篇)
- 如果想系统学习,崔庆才的书值得买! Stubborn 发表于 2020-4-22 22:12
好可爱的妹子啊 ,测试10张没有问题,速度好慢,不得行,得加代理池用Scrapy取搞
我晚点试试嘿嘿 老哥6666
页:
[1]