学习爬虫,主要是为了爬取一些公共部分数据。本文主要爬取该网站下的部分图片。主要用的包requests和etree,使用xpaht解析标签内容。
解析思路:
方法一、获取当前页面所有的大类,通过大类,访问当前界面的所有图片,同时获取“下一页”对应的标签链接,通过该链接访问当前类别下一页,此处使用递归函数。获取每张图片对应的URL,将其添加在字典中,获取到所有图片对应的URL之后,在遍历该URL 访问网络下载。
方法二、访问当前界面时,直接获取所有大类的标签,遍历获取每张图片的URL。不需要每次重新拼接URL。(猜想,没具体实现)
代码如下:
import os
import re
import time
import pandas as pd
import requests
from lxml import etree
def get_request(url):
"""
desc :网络请求转换html文件
parms :
Returns :
"""
headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36'}
time.sleep(1)
df_str=requests.get(url,headers=headers).text
df_html=etree.HTML(df_str)
return df_html
def get_sc(url, result):
"""
desc : 输出对应的结果,url ,name,label
parms :
Returns :
"""
# df_list=[]
df_html = get_request(url)
# 拼接xpath 路径的id
d_vid = 'vid'+'_'+re.findall('u_id/([0-9]+)', url)[0]
page_all = df_html.xpath('//div[@class="bd"]/div[@id="'+d_vid+'"]')
for item_div in page_all:
item_all = item_div.xpath('ul[@class="clearfix"]/li')
for item in item_all:
try:
image_url = 'http://www.supe' + \
item.xpath('div/img/@src')[0]
image_name = item.xpath('div/div/h3/em/text()')[0]
image_dsc = item.xpath('div/div/p/text()')[0]
result.append((image_url, image_name, image_dsc))
except:
print('')
# 获取当页界面的下一页,自动获取,不需要获取最大页面数
next_url = df_html.xpath('//div[@id="'+d_vid+'"]/div/div/a[3]/@href')
print('next_url', next_url)
# 获取该节点内容后,判断是否为路径
if len(next_url) != 0 and 'index.php/Project/index/' in next_url[0]:
next_url = 'http://www.supe'+next_url[0]
get_sc(next_url, result)
def test(url):
retult = []
get_sc(url, retult)
return retult
在这里插入代码片# 每一大类下面地址对应的图片信息添加一个字典
df_all_dict={}
for key in all_dict.keys():
df_all_dict[key]=test(all_dict[key])
# 网络请求下载
for key in df_all_dict.keys():
os.mkdir('../data/photo/'+key)
for item in df_all_dict[key]:
time.sleep(2)
req=requests.get(item[0])
with open ('../data/photo/'+key+'/'+item[1]+'.png','wb+') as f:
f.write(req.content)
学艺不精,烦请各位大佬指教!!!
参考:
https://blog.csdn/weixin_43351935/article/details/104650682
更多推荐
python网络爬取图片
发布评论