大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
老规矩,先上代码:
# coding=utf-8
import os
import requests
import time
from PIL import Image
from io import BytesIO
from lxml import etree
# 先定义一个opener函数:
def open_mn_web(url):
try:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
'Cookie': 'adClass0803 = 2;Hm_lvt_91a405e20ecacb7d51b80c9e4804c045 = 1557565685, 1557565698, 1557593627, 1557738534;Hm_lpvt_91a405e20ecacb7d51b80c9e4804c045 = 1557758918',
'Referer': url}
response = requests.get(url, headers=headers)
response.encoding = 'gb2312'
print(response.text)
if response.status_code == 200:
return response.content
return None
except RecursionError:
return None
def parse_mn_web(html):
htmls = etree.HTML(html)
img_xpath = '//div[contains(@class ,"picsbox")]//img/@src'
class_xpath = '//div[@class="t1"]/a[2]/text()'
result = htmls.xpath(class_xpath) + htmls.xpath(img_xpath)
return result
def save_img(data, offset):
path_root = r'E:\7160mn\mn_img'
path = os.path.join(path_root, data[0], str(offset))
if not os.path.exists(path):
os.makedirs(path)
img_temp = Image.open(BytesIO(data[1].content))
img_name = data[1][-15:-1]
img_temp.save(path + img_name, quality=95)
for i in range(0, 101, 2):
time.sleep(0.1)
char_num = i // 2 # 打印多少个'*'
per_str = '\r%s%% : %s\n' % (i, '[' * char_num) if i == 100 else '\r%s%% : %s' % (i, '[' * char_num)
print(per_str, end='', flush=True)
def main(offset):
url = 'https://www.7160.com/meinv/' + str(offset) + '/'
html = open_mn_web(url)
n = 2
while html:
data = parse_mn_web(html)
save_img(data, offset)
url = url + 'index_' + str(n) + '.html'
html = open_mn_web(url)
n = n + 1
if __name__ == '__main__':
for k in range(1, 99999):
main(k)
运行时发现request返回的html页面不完整,需要的部分,那个class为picsbox picsboxcenter的div没有内容;
我开始怀疑是异步加载,或者是js渲染,可是打开chorme自带的控制台之后发现network获取的html是完整的,而且没有xhr文件。后面又用selenium模拟浏览器操作,还是不行。我把chorme浏览器获得的完整header信息都复制到headers字典里都没用。。。。
我想可能是这个网站太多人爬了吧,维护人员可能搞了一套比较复杂的验证系统,但是我水平有限,实在想不出来,求大神分析分析啊。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219602.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...