先上图:
整了半天的python爬取绝对领域图片现在终于完成了目前是2.0版本后续会继续更新
代码去存在冗余,关键的失误存在在不知道为什么写了两个列表类型,这个完全可以不建立的,所以后续会将这个给删除。
还有一个方面就是,文件的命名过于随意,后续版本会继续将命名这个给搞好。其他的也没什么了,在html信息的提取上,这里推荐使用xpath解析,之前尝试使用过re表达式进行检索但没有查找到结果,所以还是选择了xpath解析,如果re表达式在这个地方上可以使用欢迎评论交流。
#这个仅仅是自己学习爬虫时的笔记
import requests
import time
import os
from lxml import etree
import random
ls = []
ls1 = []
dir_names = str(random.randint(0,3000))
for i in range(1,18):
url = "https://www.jdlingyu.com/tag/jk%E5%88%B6%E6%9C%8D/page/" + str(i)
ls.append(url) #这个地方得到了全部的第一个大界面的url
try:
kv = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
'cookie': r'cna=9EuxFwEUg24CAW8Qpl3II/z1; sca=afb25839; atpsidas=76f3e950933a16bde28ebb67_1599747288_1; cad=174785e6f47-5694443099097246860001; cap=4781; atpsida=d8a9f5429d555e162041fd07_1599828063_1'}
response = requests.get(ls[i - 1],headers = kv)
response.encoding = response.apparent_encoding
except:
print("链接失效")
html = response.text
respones=etree.HTML(response.text)
urls = url_data=respones.xpath('//div[@class="post-module-thumb"]/a/@href')
#这已经得到了所有的小页面的url
ls1.append(urls)
if __name__ == '__main__':
for x in ls1: #循环得到17个页面包含的小页面的url
true_url = x
for j in x:
endurl = j #得到了全部的小urls
try:
kv = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
'cookie': 'UM_distinctid=173f68b85e014a-07e183ba16b38c-3f6b4b05-144000-173f68b85e126d; Hm_lvt_2ae74021fe55d754e2dba2ce56ff1a11=1597572093,1598672462,1599824905,1599824915; CNZZDATA1259270526=1338101525-1597564269-%7C1599827958; Hm_lpvt_2ae74021fe55d754e2dba2ce56ff1a11=1599832845'}
endresponse = requests.get(j,headers = kv)
response.encoding = response.apparent_encoding
except:
print("程序运行失败!")
endhtml = endresponse.text #对小页面的url进行分析提取
endresponse = etree.HTML(endresponse.text)
url_list = endresponse.xpath('//div[@class="entry-content"]//img/@src') #获取到了每张图片的URL
print("页面获取成功。接下来进行的是页面的存储。")
#这里为了方便表示我将每一个图片的url都打印出来了,方便对照,如果感觉不合适可以自行修改。
for urla in url_list:
print(urla)
if not os.path.exists(dir_names):
os.mkdir(dir_names)
time.sleep(1)
file_name = urla.split('/')[-1]
response1 = requests.get(urla,headers=kv)
with open (dir_names + '/' + file_name,'wb') as f:
f.write(response1.content)
#一个学生物的编程爱好者
#这一串代码的重点区域在于对于爬虫代码的循环的理解
关于绝对领域图片爬取的1.0版本网址:https://blog.csdn.net/SUMPLUSS/article/details/108041949?utm_source=app
博客技术拙劣,希望能帮助到你们。
注:图片如有侵权联系本人删除。